C++ プログラムでメモリ割り当てを追跡する方法を探しています。私は、ほとんどのツールが見つけようとしているメモリ リークには関心がありませんが、アプリケーションのメモリ使用プロファイルを作成することに関心があります。理想的な出力は、関数名の大きなリストと時間の経過に伴う最大割り当てバイト数、またはさらに良いことに、時間の経過に伴うヒープのグラフィカル表現のいずれかです。横軸は時間、縦軸はヒープスペースです。すべての関数は独自の色を取得し、割り当てられたヒープ バイトに従って線を描画します。割り当てられたオブジェクト タイプを識別するためのボーナス ポイントも同様です。
アイデアは、メモリのボトルネックを見つけて、どの関数/スレッドが最も多くのメモリを消費し、さらに最適化する必要があるかを視覚化することです。
Purify、BoundsChecker、および AQTime を簡単に調べましたが、それらは私が求めているものではないようです。Valgrind は適切に見えますが、私は Windows を使用しています。Memtrackは有望に見えますが、ソース コードを大幅に変更する必要があります。
Google のスキルが足りなかったに違いありません。それほど珍しいリクエストではないように思われますか? そのようなツールを作成するために必要なすべての情報は、プログラムのデバッグ シンボルとランタイム API 呼び出しからすぐに利用できるはずです。