私のCコードのメモリ要件を知る方法はありますか? たとえば、 の C コードを作成しint arrey[1000]
ました。実行時にRAMで消費するメモリの量は、手動でカウントせずに任意のコード/ツールで知ることができますか?(システム:Ubuntu)
編集: プログラムの完全な時間を与える time ./a.out として与えることができる時間を知るためのように.
プログラムを起動すると同時に、別のターミナル ウィンドウで次のように入力します。
top
これにより、システムで実行されているものに関する情報が得られます: CPU 使用率、メモリ、ユーザー、時間...
コードがあり、それをコンパイルした場合は、valgrind
. このコンソール ツールは、ヒープの概要を出力し、割り当てられたメモリのうちどれだけがメモリ エラーで失われたか、およびコード上のそれらの位置を出力します。
配列のメモリ要件を確認するには、 sizeof関数を使用して配列全体のサイズを確認します。
cout << "bytes used: " << sizeof(arrey) << endl;
各要素の記憶を見つけるには:
cout << "byte per element: " << sizeof(int) << endl;
次の Linux コマンドを使用して、システム メモリの使用状況に関する統計を取得します。
$ free
...
$ cat /proc/meminfo
...
/proc/self/statm
独自のアプリケーション内から、(順次) などを読み取ることができます。ファイルシステムの/proc/self/maps
詳細については、 proc(5)のマニュアル ページを参照してください。/proc
(C ソース コードの静的解析によってメモリ消費量を制限することは、一般的に困難または不可能です)
コマンドを使用ps
すると、プロセスによって割り当てられたメモリ ページの量を取得できます。これは完全なインデックスではありません。さらに精度が必要な場合は、 gperftoolsなどのメモリ プロファイラーを使用します。
sizeof を使用するだけですcout<<sizeof(arrey);
1000 * 4 = 4000、スタック上。