Недопустимая операция указателя происходит, когда диспетчеру памяти предлагается освободить память, которая ему не принадлежит.
Память объекта освобождается непосредственно перед тем, как внешний деструктор возвращается к вызывающей стороне.Звонящий в этом случае - TObject.Free
.Вызов inherited
не приводит к освобождению памяти объекта, поскольку компилятор знает, что это не внешний вызов.
Очевидно, вы освобождаете объект, который на самом деле не существует, но содержимое объектапамять для этого предполагаемого объекта выглядит достаточно корректной, чтобы код в деструкторе, который очищает поля объекта, не падал.Только когда деструкторы завершат работу и объект будет освобожден, менеджер памяти обнаружит, что адрес не ссылается на что-либо выделенное в данный момент.