私はマルチスレッドアプリケーション用のトレースツール、特にメモリ割り当てに取り組んでいます。
スレッドごとのメモリ割り当てが欲しいのですが。スレッドがmallocを実行する場合、使用されるメモリはグローバルヒープであることを私は知っています。どのスレッドがどのくらいのメモリを割り当てたかを追跡したいと思います。
私はmallocにラッパーを作成し、mallocが存在するたびに次のように値をインクリメントしました。
void *mymalloc(size_t size) {
mem_used[thread_id] += size;
return malloc(size);
}
それはうまくいきます。問題は、free
解放されたメモリの量を返さないメソッドにあります。
私の解決策を考慮に入れないでください、それは私が試したことを示すためだけです。
編集:
上で述べたように、私自身のテーブルを維持することはあまりにも重い方法です。