Форум — Ответы     (  К темам )
 ?  Сергей Т.: Удаление динамически соэданных компонентов (22-02-2003 02:02:59)
Люди добрые!!!
Подскажите, пожалуйста!
Я динамически создаю компонент Frame и мне нужно его после использования удалить, причем удаление может происходить из разных мест программы. Как бы проверить, не был ли этот компонент удален ранее, т. е. чтобы удалить компонент только один раз.
 Георгий (22-02-2003 12:01:06)
Ну этот компонент тебе доступен по указателю — значит туда (в указатель) можно записать какое-то значение, которое не может соответствовать адресу обьекта — хорошо подходит 0 (null) — я делаю это так:
delete ptrComponent;
ptrComponent=0;
в этом случае нет никаких проблем с повторным delete (я дизасемблировал библиотечный код delete — так вот в самом начале делается проверка на нулевой указатель и если это так, то функция ничего не делает), а если кто-то обратился к удалённому таким образом компоненту, то сразу Acces Violation по адресу близкому к нулю — т.е. опять же всё очень хорошо видно.
а проверка на существование может делаться в начале функции так
if (!ptrComponent)return;
Подходит?