|
|
|
delete...
|
|||
|---|---|---|---|
|
#18+
Привет! Кто-нить скажите, как же можно из функции-члена класса делать delete this??? Пямять, выделенная для класса освобождается... а как же выполняются строки кода в той же функции, идущие после delete this? То есть где в памяти хранится код этой функции? и еще по C++ Builder'у Если на закрытие формы OnClose задать Action = caFree, форма сама себя delete делает? Если да, то как потом Owner формы (Application) понимает, что эту форму не следует еще раз deletить.. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 21:05 |
|
||
|
delete...
|
|||
|---|---|---|---|
|
#18+
Пямять, выделенная для класса освобождается... а как же выполняются строки кода в той же функции, идущие после delete this? То есть где в памяти хранится код этой функции? бывают программы, а бывают данные... программа висит в памяти, пока ее не выгрузят, т.е. не выгрузят DLL или EXE или еще какой модуль при выполнении delete something происходит удаление данных , код никто не удаляет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 04:46 |
|
||
|
delete...
|
|||
|---|---|---|---|
|
#18+
Да, если бы для каждого объекта класса в памяти генерился бы отдельный кусок кода с методами... 2 MikeG Можешь удалять спокойно. Каждый метод генерится в статической памяти и в количестве 1 для одного класса. В него передаётся указатель this как параметр, дабы понять методу, какой из объектов его класса к нему обратился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 07:54 |
|
||
|
delete...
|
|||
|---|---|---|---|
|
#18+
авторЕсли да, то как потом Owner формы (Application) понимает, что эту форму не следует еще раз deletить.. так какие проблемы delete можно и 10 раз подряд с одним указателем ... только после первого он становится NULL и все ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 16:44 |
|
||
|
delete...
|
|||
|---|---|---|---|
|
#18+
123456789098 т.е. вот это будет работать? Код: plaintext 1. 2. 3. 4. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 16:57 |
|
||
|
delete...
|
|||
|---|---|---|---|
|
#18+
Насчет delete this все понятно. а вот после delete указатель не обнуляется... и delete obj несколько раз делать нехорошо... Может просто Форма регистрирует себя у Owner'а, которого она получает в конструкторе и выписывает себя, когда выгружается? В общем, почитав Help, я пришел к такому выводу: Задав объекту Owner'а мы снимаем с себя ответственность за очистку памяти. Если же Owner=NULL, то потом нам самим надо delete объекта. Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 20:07 |
|
||
|
delete...
|
|||
|---|---|---|---|
|
#18+
форма не регистрирует себя нигде у родителя, при delete this выполняется разрушение данных объекта этого класса (в т.ч. и pvtable), поэтому в принципе она должна стоять последней в методе (последующий доступ к своим данным или вызов нестатических своих ф-ий приведет к крешу). данные класса располаг. в сегменте данных, а код - в сегм. кода, так что все будет ок. вообще это считается не очень хорошим приемом и апологеты чистого ООП ругают такую конструкцию - это что-то типа открытых данных для класса насколько я знаю, это используется в BCB и MFC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2004, 14:22 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32385464&tid=2035488]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
2546ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 2853ms |

| 0 / 0 |
