GCC for Linux でコンパイルされた C プログラム内からの基本的な質問に答える必要があります。現在使用中のプロセス ヒープの量 (によって割り当てられているmalloc
) と、空きヒープがブロックされている場合に存在する量です。標準ライブラリの GNU 実装にはmallinfo
、必要なものを正確に報告する関数がありますが、32 ビット構成でのみ使用でき、AFAIK では、その機能に相当する 64 ビットはありません (ところで、誰もが理由を知っていますか?)。
LinuxでGCCを使用しているため、Linuxにはこれが必要です。ただし、ヒープはシステムに対して不透明であると想定しているため、この質問に答える唯一の方法は、標準ライブラリの実装によって提供される手段を使用することです。
Windows プラットフォームでの MSVC の実装には関数に相当するものはありませんmallinfo
が、いわゆるヒープ ウォーク機能があり、ヒープ内のすべてのブロックを反復処理して必要な情報を計算できます。私の知る限り、GNU C ライブラリにはヒープ ウォーク インターフェイスはありません。(ある?)。
繰り返しになりますが、GCC で何をすればよいのでしょうか。効率的である必要はありません。つまり、前述のヒープ ウォーク ベースのアプローチは、私にとってはまったく問題なく機能します。GCC で使用中のヒープの量と空きの量を調べるにはどうすればよいですか? mallinfo.arena
を使用せずに現在のヒープ アリーナ サイズ (「参考文献」を参照)を判断する方法はわかりませんが、おそらく malloc-hooks をインストールしてサイズを「手動で」追跡することができますmallinfo
。