アプリケーションでメモリ管理にルックアサイドリストを使用できるようにしようとしています。私はこの主題に関する様々な論文から以下の詳細を知っています。
- ルックアサイドリストは、ヒープベースからのオフセット+0x688にあります。
- 各メンバーの長さは48バイトです。
- lookasidelist [0]、lookasidelist[1]は使用されていません。
- lookasidelist[n]ブロックのサイズはn*8で、(n-1)* 8バイトブロック(残りの8バイトはヘッダーに使用)を格納するために使用され、オフセット0は、サイズ(n-1)の空きチャンクを含むリンクリストを指します。 )*8nullで終了します。
- ルックアサイドリストは、XP SP3ではデフォルトで有効になっており、Vista / Win 7システムでは無効になっています(Vista / Win 7では低フラグメンテーションヒープが使用されます)
私が直面している問題は、私のアプリケーションがLookasideリストを使用していないように見えることです。ルックアサイドリストから割り当てが行われていないようで、解放されたすべてのブロックがフリーリストに移動されます。アプリケーションがルックアサイドリストを使用するために、特定のコンパイラフラグまたは条件が満たされる必要がありますか?アプリケーションはMicrosoftVisualC ++ 2010 Express Editionでコンパイルされ、WindowsXPSP3でテストされています。ルックアサイドリストが使用されているかどうかを確認するためにイミュニティデバッガーを使用しています。より良い方法があれば私に知らせてください。