Форум программистов, компьютерный форум CyberForum.ru

Освобождение памяти от циклического списка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нужна максимальная скорость программы http://www.cyberforum.ru/cpp-beginners/thread500195.html
Нужна максимальная скорость программы (сложение, сравнение целочисленных переменных, в том числе лежащих в Byte массивах и пр. похожие операции). На каком языке какой версии это лучше делать?
C++ Как сделать диалог, который сам появляется и исчезает привет всем! как сделать диалоговое окно, которое само появляется (то есть НЕ при нажатии на кнопку или пункт меню), а отобразив то, что нужно, само исчезает (без всяких кнопок ОК или CANCEL)?? Вроде бы в Билдере это не сложно делалось, а вот в Визуале есть только функции, которые позволяют изменять окно только перед его появлением. http://www.cyberforum.ru/cpp-beginners/thread500189.html
Литаретура по созданию драйверов. C++
Hi! хочу заняться написанием драйвером для устройств. Какую литературу Вы можете посоветовать, для начинающего, чтобы там описывалось, что такое порты, как определить какие порты использует устройство, какие сигналы прерываний и т.д. Как работать с портами ввода/вывода (USB/COM), содержали примеры написания драйверов для какихто устройств (модем, винчестер). Может есть специализированный...
Проблема с методом OnOk для диалогового окна C++
Привет всем. Метод OnOk для диалогового окна свой радной. Я использовала OK для вызыва другого диалогового окна который содержит кнопки OK и Cancel. Хотела чтоб OK закрывал главное окно программы, а Cancel не делал нечего(кроме отмены вызванного окна). Увы результат только об ошибки в коде со стораны комплятора. Может подскажети как пройти?
C++ Activex-компонент Spreadsheet http://www.cyberforum.ru/cpp-beginners/thread500089.html
Создал MDI-ое приложение. В каждом дочернем окне у меня создается компонент Spreadsheet (класс CSpreadsheet1). Этот ActiveX компонент является Excel таблицой. Связал с ним переменную - получил доступ к некоторым его свойствам. Но не как не могу получит те данные, которые ввожу в ячейки таблицы. Или наоборот заполнить ячейки какими-то данными. Если кто-то знает как это всю делается буду очень...
C++ выделение и копирование в Word Доброго времени суток! Пожалуйста подскажите как сделать несколько действий с MS Word''om: 1. Выделить текст весь текст из одного документа (заполненая таблица в out.doc) 2. Скопировать его конец другого документа (in.doc) Почти четыре дня пытаюсь методом тыка осилить эти две операции... но безуспешно :( С помощью страых тем на форуме научился только открывать, сохранять и работать с... подробнее

Показать сообщение отдельно
petrovich1
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
08.12.2011, 12:48  [ТС]     Освобождение памяти от циклического списка
ситуация немного сложнее:

есть некий класс:
C++
1
2
3
4
5
6
7
8
9
10
11
class Item 
{ 
// Переменные
    CItem* p_parentItem;
    CString m_Name;
    CString m_Family;
// Методы
    CItem(void);
    CItem(CString);
    ~CItem(void);
}
есть некий тип данных:
C++
1
typedef std::vector<Item> ItemVector;
есть некий вектор - член класса CTreeDlg:
C++
1
ItemVector v1;
есть некая функция по заполнению этого вектора:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
bool CTreeDlg::CreateList(CString FilePath, CString FileName)
{
    // формирование родителя
    CItem daddy(FileName);
    //CItem daddy = new CItem(FileName);
 
    v1.push_back(daddy);
 
    FILE *stream;   
    
    CItem current;
    CItem* previous;
    char str_from_file[MAX_PATH];
 
    current.p_parentItem = &daddy;
 
    if( FilePath < "  " ) { 
        return FALSE; // слищком короткая строка, содержащая путь к файлу
    }
    else {       
        stream = fopen(FilePath, "a+"); 
        while( !feof( stream ) ) 
        {   
            fgets(str_from_file, MAX_PATH, stream);
 
            current.m_Name = str_from_file;
            // здесь разбить на лексеммы 
            current.m_Name.OemToAnsi();
            int second_word = current.m_Name.Find('' '', 0);
            current.m_Family = current.m_Name.Mid(second_word + 1, current.m_Name.GetLength());
            current.m_Name = current.m_Name.Left(second_word);
            
            // здесь код формирования списка
            v1.push_back(current);
            previous = &current;
        }
        fclose(stream);
        return TRUE;    // всё тру
    }
}
вопрос: есть ли в вышеприведенном коде утечка памяти?
Если я правильно понимаю, вектор в данном случае - типа контейнера,
в котором находятся связанные между собой экземпляры класса Item?
заранее спасибо
 
Текущее время: 14:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru