Re[3]: Почему у диалогового класса нет деструтора?
От: Demon Россия  
Дата: 02.09.02 14:27
Оценка: 12 (2)
Здравствуйте Constructor, Вы писали:

C>Здравствуйте Nikto, Вы писали:


N>>Здравствуйте Constructor, Вы писали:


C>>>Здравствуйте!

C>>>Почему у диалогового класса нет деструтора?
N>>В какой момент мне освобождать динамически выделенную память (например, при нажатии на кнопку выделяю кусок)?

N>>Например в OnClose()


C>Не совсем верный ответ. OnClose() вызывается только если закрывать диалог кнопкой закрытия окна в правом верхнем углу. А при закрытии кнопакми ОК и Отмена — не вызывается. Наверное, лучше OnDestroy().

Все выше описанное не то чтоб неверно, но нежелательно.
Например при следующем использовании:
CMyDialog dlg;
while(dlg.DoModal()!=IDOK);

конструктор будет вызван только один раз, а OnDestroy() может вызываться много раз. Результат думаю очевиден.
И вообще:
если выделяешь память в конструкторое — очищай в деструкторе
если выделяешь память в OnInitDialog() — очищай в OnDestroy().
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.