Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OnResize и OnDestroy, ошибка с указателемя и free() 
:(
    Опции темы
Notreg
Дата 8.8.2008, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



хотел память освободить от Graphics::TBitmap *
делаю это в OnDestroy
при этом в OnResize эти переменные используются!
при закрытии ошибка в OnResize, если закоментить тело OnResize все нормально!
где мне память освободить? разве форма деформируется при унижтожении?
--------------------
Надежна лишь смерть, жизнь - нет.
PM MAIL   Вверх
Alca
Дата 8.8.2008, 14:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



В деструкторе.
Код

__fastcall TfrmMain::~TfrmMain() {
    delete pBitmap;
    pBitmap = NULL;
} 


Это сообщение отредактировал(а) Alca - 8.8.2008, 14:40


--------------------
PM WWW ICQ Skype Jabber   Вверх
Notreg
Дата 8.8.2008, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



чет я не понял, че за деструктор такой. как это понимать?
--------------------
Надежна лишь смерть, жизнь - нет.
PM MAIL   Вверх
Alca
Дата 8.8.2008, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



В хедере (Unit1.h):
Код

    class TfrmMain : public TForm {
        //...
        public:
             __fastcall TfrmMain(TComponent* Owner);
             __fastcall ~TfrmMain();
        private:
             Graphics::TBitmap *pBitmap;
         //....
    }

В юните  (Unit1.cpp):
Код

//конструктор
__fastcall TfrmMain :: TfrmMain(TComponent* Owner) : TForm(Owner) {
    Graphics::TBitmap *pBitmap = /*инициализация*/;
}
//деструктор
__fastcall TfrmMain::~TfrmMain() {
    delete pBitmap;
    pBitmap = NULL;
} 

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

Это сообщение отредактировал(а) Alca - 8.8.2008, 19:09


--------------------
PM WWW ICQ Skype Jabber   Вверх
Notreg
Дата 8.8.2008, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



у понятно!
 а делит чем отличается от .free() ? и нуль зачем присваивать?
--------------------
Надежна лишь смерть, жизнь - нет.
PM MAIL   Вверх
Notreg
Дата 8.8.2008, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



нет, не помогло, по ходу OnDestroy тот же деструктор, так как после него все равно выполняется OnResize.
--------------------
Надежна лишь смерть, жизнь - нет.
PM MAIL   Вверх
mes
Дата 8.8.2008, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Notreg @  8.8.2008,  21:09 Найти цитируемый пост)
нет, не помогло, по ходу OnDestroy тот же деструктор, так как после него все равно выполняется OnResize. 

проверяй в onResize указатель на NULL, (присвоение которого делается в деструкторе)

Это сообщение отредактировал(а) mes - 8.8.2008, 21:19


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


Шустрый
*


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

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



проверять чтоб все были NULL ?

Добавлено через 8 минут и 36 секунд
а понял! тока так?
--------------------
Надежна лишь смерть, жизнь - нет.
PM MAIL   Вверх
586
Дата 8.8.2008, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код
if(pBitmap != NULL)
{
     // действия с bitmap
}

PM   Вверх
Notreg
Дата 9.8.2008, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



нуда я как раз это понял. спасибо!
--------------------
Надежна лишь смерть, жизнь - нет.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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