FAQ Поиск Пользователи Группы ФотоАльбом  Регистрация Войти и проверить личные сообщения Вход
Delphi проверка валидности указателя на объект

 
Начать новую тему   Ответить на тему       Список форумов Forum.profintel.ru -> Программерский раздел
Предыдущая тема :: Следующая тема  
Автор Сообщение
Wizard RAA
Генерал


Репутация: 41    

Зарегистрирован: 17.03.2005
Сообщения: 3010
Откуда: из Ордена Полуночи, 248 сегмент

СообщениеДобавлено: Вс Ноя 13, 2011 1:53 pm    Заголовок сообщения: Delphi проверка валидности указателя на объект Ответить с цитатой

Если, например, ссылка-указатель на объект хранится в нескольких местах
Код:

link1 = TMyObject.Create;
link2 = link1;

а потом нам вдруг вздумалось объект уничтожить
Код:

link1.Free;
или даже так
FreeAndNil(link1);

то получится так, что по указанному адресу объекта уже нет, но ссылка link2 ничего об это не знает и по прежнему ссылается на область памяти, где уже ничего нет. А если не всегда ясно, уничтожен ли конкретно этот объект или нет и мы пытаемся его уничтожить по второй ссылке, то в случае если он был уничтожен возникает ошибка:
Код:

if link2 <> nil then
  link2.Free;

естественно, что проверка на нил не срабатывает, поскольку ей был присвоен ранее конкретный адрес.
Не работает также и проверка
Код:

if Assigned(link2) then ....

Неужели остаётся только вариант?
Код:

try
  link2.Free;
finally
  link2 := nil;
end;

_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему       Список форумов Forum.profintel.ru -> Программерский раздел Часовой пояс: GMT + 6
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы