Neuroware
@Neuroware
Программист в свободное от работы время

Почему может возникать Invalid pointer operation в Pascal?

Есть функция на паскалеподобном синтаксисе if oNode <> nil then FreeObject(oNode);
в этой строке при работе возникает ошибка Invalid pointer operation
из описания ясно что:
204 Invalid pointer operation
You will get this if you call Dispose or Freemem with an invalid pointer (notably, Nil).

То есть nil это только один из возможных вариантов, но в этом коде вызов FreeObject априори только тогда, когда объект не nil, в связи с чем вопрос что еще может быть не так с объектом, что его нельзя очистить и как это проверить?

p.s. возможно причина в том что данный объект присваивался к одному и из элементов списка, который очищался перед очисткой данного объекта, то есть объект вроде как существует, а данные уже нет
  • Вопрос задан
  • 1183 просмотра
Пригласить эксперта
Ответы на вопрос 2
@vilgeforce
Раздолбай и программист
Скорее всего все так и есть: дважды вызов "очистки" на одном объекте.
Ответ написан
Комментировать
2ord
@2ord
p.s. возможно причина в том что данный объект присваивался к одному и из элементов списка, который очищался перед очисткой данного объекта, то есть объект вроде как существует, а данные уже нет
Именно так.

Имеет смысл воспользоваться функцией FreeAndNil внутри реализации FreeObject.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы