私は、コードを以下の(I}はobjCurがフリーの前にnilでない確認していますこの無効なポインタはどこにありますか?
try
objCur.Free;
Except on E:Exception do
begin
OutputDebugString(PChar('Exception '+E.Message));
Assert(False);
end;
end;
それはこの例外メッセージを報告:。。
無効なポインタ操作をobjCurがTXX_TEAタイプです
0123を下記たTXX_TEA.Destroyにおいて
objCur:TXX_TEA ; Iはコード
内部破壊
例外の
...
エンド破壊:私は次のメッセージが表示さのDebugViewで無効なポインタ操作
を私はobjCur.Free呼び出しを知っていますTXX_TEA.Destroyが、TXX_TEA.Destroyはエラーなしで実行されます。では、この無効なポインタ操作をどこでトレースする必要がありますか?
'objCur'が非nilかどうかを確認するだけでは不十分です。実際、もしそれが* nilであれば、まったく問題はありませんでした。有効なオブジェクトを参照するかどうかをチェックする必要があります。これは実際にプログラムで確認できるものではありません。プログラムを分析して、変数に無効な参照があるようなバグがないことを確認する必要があります。 –
私はobjCur.FreeがいつTXX_TEA.Destroyを最初に呼び出すのかを知りたいと思っています。それからそれ自身のプロパティを解放しますか? TXX_TEAでは、Allos、Allos [i] .xx = self.xxというプロパティが存在するため、 TXX_TEA.Destroyでは、Allos.Freeが呼び出されます。 objCurがそのxxプロパティを解放したときに既に解放されているかどうかは疑問です – spspli