powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / delete...
7 сообщений из 7, страница 1 из 1
delete...
    #32385318
MikeG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет!
Кто-нить скажите, как же можно из функции-члена класса
делать delete this???
Пямять, выделенная для класса освобождается...
а как же выполняются строки кода
в той же функции, идущие после delete this?
То есть где в памяти хранится код этой функции?

и еще по C++ Builder'у

Если на закрытие формы OnClose
задать Action = caFree, форма сама себя delete делает?
Если да, то как потом Owner формы (Application) понимает,
что эту форму не следует еще раз deletить..

Спасибо
...
Рейтинг: 0 / 0
delete...
    #32385464
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пямять, выделенная для класса освобождается...
а как же выполняются строки кода
в той же функции, идущие после delete this?
То есть где в памяти хранится код этой функции?



бывают программы, а бывают данные...
программа висит в памяти, пока ее не выгрузят, т.е. не выгрузят DLL или EXE или еще какой модуль

при выполнении delete something происходит удаление данных , код никто не удаляет :)
...
Рейтинг: 0 / 0
delete...
    #32385531
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, если бы для каждого объекта класса в памяти генерился бы отдельный кусок кода с методами...
2 MikeG
Можешь удалять спокойно. Каждый метод генерится в статической памяти и в количестве 1 для одного класса. В него передаётся указатель this как параметр, дабы понять методу, какой из объектов его класса к нему обратился.
...
Рейтинг: 0 / 0
delete...
    #32386510
123456789098
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЕсли да, то как потом Owner формы (Application) понимает,
что эту форму не следует еще раз deletить..

так какие проблемы delete можно и 10 раз подряд с одним указателем ... только после первого он становится NULL и все
...
Рейтинг: 0 / 0
delete...
    #32386521
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123456789098

т.е. вот это будет работать?
Код: plaintext
1.
2.
3.
4.
 some_obj *obj = new some_obj;

 delete obj;
 delete obj;


:)
...
Рейтинг: 0 / 0
delete...
    #32386727
MikeG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насчет delete this все понятно.

а вот после delete указатель не обнуляется...
и delete obj несколько раз делать нехорошо...

Может просто Форма регистрирует себя у Owner'а,
которого она получает в конструкторе
и выписывает себя, когда выгружается?

В общем, почитав Help, я пришел к такому выводу:
Задав объекту Owner'а мы снимаем с себя
ответственность за очистку памяти.
Если же Owner=NULL, то потом нам самим надо delete объекта.
Так?
...
Рейтинг: 0 / 0
delete...
    #32387799
maratka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
форма не регистрирует себя нигде у родителя, при delete this выполняется разрушение данных объекта этого класса (в т.ч. и pvtable), поэтому в принципе она должна стоять последней в методе (последующий доступ к своим данным или вызов нестатических своих ф-ий приведет к крешу).
данные класса располаг. в сегменте данных, а код - в сегм. кода, так что все будет ок.
вообще это считается не очень хорошим приемом и апологеты чистого ООП ругают такую конструкцию - это что-то типа открытых данных для класса
насколько я знаю, это используется в BCB и MFC.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / delete...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]