質問: こんにちは。 現在、linuxOSでのc言語のプログラム上でmallocを多数個使って 2次元、3次元配列でメモリを確保しております。 しかし、入力ファイルの要素数が大きくなると、メモリが100%以上 になるため、配列それぞれがどれほど容量を食っているのか確認したい と思っています。 そこで、(なるべく)プログラムのソースを変えることなく、 **配列それぞれ の容量**を**デバッグ**または**プロファイリング**する方法を お教えいただければと思います。 どうぞよろしくお願いいたします。 //追記(具体的なプログラムと、具体的な知りたい結果 について) コードは載せられないですが、大体、計算機1台で100GBを使って、 10台以上を使って並列計算するようなプログラムを、 職場の先輩から引継ぎました。 配列ひとつずつをmalloc_usable_size(hairetu)で確認するのは 面倒そうなので、おすすめの確認方法があればお教えください。 ``` %最初にメモリ確保 int_a[*][*][*] int_b[*][*][*] int_c[*][*][*] int_d[*][*][*] ・・・intの3次元が10個ぐらい double_a[*][*] double_b[*][*] double_c[*][*] ・・・doubleの2次元が10個ぐらい %ループ計算 計算 %ループ終わり (ループ計算が数時間以上かかる) ``` この計算の実行最中や実行後に、 int_a ・・・ 10GB int_b ・・・ 11GB int_c ・・・ 12GB double_a ・・・ 20GB double_b ・・・ 21GB double_c ・・・ 22GB といったmallocの実際のメモリ量が知りたいと思います。
回答: 例えば Valgrind/Massif ヒープ・プロファイラでは、ソースコードに一切手を加えることなくプロファイリングが可能です。 Massifによるプロファイリング結果データを可視化する massif-visualizer も存在します。