1
FastMMによって特定のメモリブロックが解放されなかったかどうかをプログラムで確認する方法はありますか?
メモリブロックが解放されなかったかどうかを検出しようとしています。もちろん、マネージャーはダイアログボックスまたはログファイルでそれを通知しますが、データベースに結果を保存したい場合はどうなりますか?たとえば、データベーステーブルに、特定のブロックを割り当てたルーチンの名前を付けたいと思います。 FastMMのドキュメントを読んだ後、バージョン4.98以降、メモリの割り当て、解放、再割り当てが発生すると、マネージャから通知を受ける可能性があることがわかりました。たとえば、OnDebugFreeMemFinishイベントはPFullDebugBlockHeader有用な情報を含むaに渡されます。PFullDebugBlockHeader不足していることが1つあります。指定されたブロックがアプリケーションによって解放された場合の情報です。 OnDebugFreeMemFinish解放されていないブロックに対してのみ呼び出されない限り?これは私にはわからないので知りたいです。 問題は、OnDebugFreeMemFinishイベントにフックしてもブロックが解放されたかどうかを確認できなかったことです。 次に例を示します。 program MemLeakTest; {$APPTYPE CONSOLE} uses FastMM4, ExceptionLog, SysUtils; procedure MemFreeEvent(APHeaderFreedBlock: PFullDebugBlockHeader; AResult: Integer); begin //This is executed at the end, but how should I know that this block should be freed //by application? Unless this is executed ONLY for not freed blocks. end; procedure Leak; …