我有以下代碼(我查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