Xmx???M Java フラグのような VS2005 C++ コンパイラ フラグで、Windows で実行するアプリケーションのヒープ サイズを制限できます。
現在の空きメモリを確認するためにメモリを埋めることができるように、ヒープ サイズを制限する必要があります。(コードは組み込みシステムでも実行され、これがメモリ使用量を取得するための最良の方法です)
Xmx???M Java フラグのような VS2005 C++ コンパイラ フラグで、Windows で実行するアプリケーションのヒープ サイズを制限できます。
現在の空きメモリを確認するためにメモリを埋めることができるように、ヒープ サイズを制限する必要があります。(コードは組み込みシステムでも実行され、これがメモリ使用量を取得するための最良の方法です)
サイズを次のように設定することで、プログラムのヒープ サイズを設定できます。
Linker -> System -> Heap Reserve Size
を使用して、コンパイラ コマンド ラインで設定することもできます。/HEAP:reserve
gflags ユーティリティ (Windows Debugging Tools 内) でこれを実行できるかどうかを調べることをお勧めします。ネイティブ アプリケーションのヒープを使用して、他にも多くの興味深いことができます。
ヒープ サイズは、使用するアロケータによって異なります。プロセスが割り当てることができるメモリの量を制限する Windows API 呼び出しもあるかもしれませんが、私はそれを認識しておらず、今はそれを探す気がしません。申し訳ありません。しかし、一般に、独自のアロケーターを作成すると (コンパイラーが提供するmalloc()
ornew
演算子をラップするだけかもしれません)、ヒープ サイズを人為的に制限することができます。
あるいは、独自のアロケーターがある場合は、ラッパーだけであっても、合計で割り当てられたメモリの量を追跡できます。利用可能な金額がわかっている場合は、減算を行うだけで合計を取得できます。最大の空きブロックなど、断片化の統計を取得できる場合もあります。