Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическое уделение памяти, операция "delete" 
V
    Опции темы
andreykeil
Дата 10.10.2008, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



  Приветствую всех!
Пишу на C++Builder 6.
Написал следующий код:

Цитата

    TMemo *MemoFind= new TMemo(this);
    MemoFind->Parent = Form1;
    MemoFind->Visible = false;
    ...
    

 Вопрос в том, что не могу правильно освободить память "MemoFind".

    delete MemoFind;  -  не работает!!!  smile 

Подскажите, как правильно.

PM MAIL   Вверх
DjoNIK
Дата 10.10.2008, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: 1
Всего: 5



Что занчит
Цитата(andreykeil @  10.10.2008,  11:57 Найти цитируемый пост)
 delete MemoFind;  -  не работает!!!

Код можно?


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
andreykeil
Дата 10.10.2008, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



  Объявляю невидимый компонент Memo:

Цитата

void __fastcall TForm1::N2Click(TObject *Sender) {
    TMemo *MemoFind= new TMemo(this);
    MemoFind->Parent = Form1;
    MemoFind->Visible = false;
    ...
}


  ..а здесь хочу этот компонент удалить:

Цитата

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) {
    if (hFile) {
        CloseHandle(hFile);  //закрываем файл
        hFile = NULL;
    }
    delete []Buf1File;
    delete []Buf2File;
    delete []Buf3File;
    bFlagB3 = 0;
    delete MemoFind;   //вот здесь ругается...
    Buf1File = NULL;
    Buf2File = NULL;
    Buf3File = NULL;
}


PM MAIL   Вверх
Alexeis
Дата 10.10.2008, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



andreykeil, можно попробовать MemoFind->Free(); но ИМХО произойдет тоже самое.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Mayk
Дата 10.10.2008, 12:17 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 3
Всего: 134



вынеси TMemo *MemoFind в поля(ака переменные-члены) класса. 


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
anatox91
Дата 10.10.2008, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: 1
Всего: 13



у тебя локальный указатель, а ты пытаешься удалить его из другой функции
либо удаляй в той же функции, либо делай указатель членом класса (или глобальным, что естественно плохо)

Это сообщение отредактировал(а) anatox91 - 10.10.2008, 12:22


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
andreykeil
Дата 10.10.2008, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Цитата

вынеси TMemo *MemoFind в поля(ака переменные-члены) класса. 


... не понял, а это как? Если можно код  smile 
PM MAIL   Вверх
vinter
Дата 10.10.2008, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 8
Всего: 56



andreykeil, а может книжки  хотя бы начального уровня почитать?


--------------------
Мой блог
PM MAIL WWW   Вверх
mes
Дата 10.10.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Код


class TForm1: public ...
{
   ... 
    private:
        TMemo *m_MemoFind:
        ...
};

void __fastcall TForm1::N2Click(TObject *Sender) {
    /*TMemo * */ m_MemoFind= new TMemo(this);
...

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) {
....
    delete m_MemoFind;  
...




--------------------
PM MAIL WWW   Вверх
DjoNIK
Дата 10.10.2008, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: 1
Всего: 5



andreykeil, тебе понятие области видимости известно? Ты в одном методе создаешь локальную переменную MemoFind  - указатель на TMemo и выделешь память из кучи, при этом к моменту завершения метода указатель будет уничтожен, а память будет висеть зарезервированной до окончания программы. А в другом методе пытаешься обратиться к переменной, которую ты еще не создал и неинициализировал. Тебе компилятор об этом должен был написать. Бери книги по C++, по английскому и следуй завещанию дедушки Ленина.


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
mrbrooks
Дата 10.10.2008, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



andreykeil,  объяви TMemo *MemoFind хотя бы глобально, если есть не понимать совета
Цитата(Mayk @  10.10.2008,  12:17 Найти цитируемый пост)
вынеси TMemo *MemoFind в поля(ака переменные-члены) класса.  


DjoNIK, хорошо разъяснил  smile 
PM MAIL   Вверх
andreykeil
Дата 13.10.2008, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



 пасиб всем! Понял.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0587 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.