我有以下代码(我查objCur是不是免费前无}:这个无效指针在哪里?
try
objCur.Free;
Except on E:Exception do
begin
OutputDebugString(PChar('Exception '+E.Message));
Assert(False);
end;
end;
据报告此异常消息:
无效的指针操作objCur是TXX_TEA型
objCur:TXX_TEA ;
在TXX_TEA.Destroy我有以下代码
destructor TXX_TEA.Destroy;
begin
OutputDebugString(PChar('Inside Destroy'));
...
inherited;
OutputDebugString(PChar('End of Destroy'));
end;
在DebugView中我看到以下消息:
内摧毁
...
最终的销毁异常:无效的指针操作
我知道objCur.Free电话TXX_TEA.Destroy,但它看起来TXX_TEA.Destroy无误地执行。那么我应该在哪里跟踪这个无效的指针操作?
检查'objCur'是否为非零是不够的。事实上,如果它*为零,你根本就没有任何问题。你需要检查它是否指向一个有效的对象,这实际上不是你可以通过编程来检查的东西。您需要通过分析程序来检查并确保您没有任何会导致变量具有无效参考的错误。 –
Acutally我想知道什么时候objCur.Free,它会先调用TXX_TEA.Destroy,然后它将释放它自身的属性?因为在TXX_TEA中,有一个属性Allos,Allos [i] .xx = self.xx;在TXX_TEA.Destroy中,调用Allos.Free。所以我怀疑当objCur释放它的xx属性时,它已经被释放了 – spspli