Delphi 7でアプリケーションを閉じているときに、次のエラーが発生します。
「0x011c34a6の命令は0x018333f4のメモリを参照しました。メモリを読み取ることができませんでした。」
この問題の原因は何ですか?
これはアクセス違反の例外です。プログラムが無効なメモリアドレスにアクセスしようとすると発生します。
最も明白な原因は、割り当てが解除されてシステムに戻されたメモリにアクセスしていることです。デバッガーの下で実行し、例外を発生させるコードでデバッガーを中断させることをお勧めします。これにより、参照しているオブジェクトがわかり、オブジェクトが破棄された後に参照している理由を理解する必要があります。
そうは言っても、0x011c34a6の命令ポインター値は、0x00400000に基づくexeファイルにあるようには見えません。そのため、DLLで例外が発生し、障害のデバッグが少し難しくなる可能性があります。
Delphi7のデフォルトのBorlandMMではなく、完全なデバッグオプションを備えたFastMMメモリマネージャを使用することをお勧めします。FastMMには、このような障害の特定と診断に役立つ多くのデバッグツールがあります。この障害を追跡するのに役立つ場合がありますが、そうでない場合は、将来的に他の障害を見つけるのに確実に役立ちます。
ヴィシャール。私はいくつかの可能性があります。コード内でより簡単に解放されたものを解放またはアクセスしようとすると、これが発生します。アプリケーションのシャットダウン中に実行されるコードをステップスルーすると、エラーが発生する可能性があります。スレッドを使用していますか?