2

私のCコードのメモリ要件を知る方法はありますか? たとえば、 の C コードを作成しint arrey[1000]ました。実行時にRAMで消費するメモリの量は、手動でカウントせずに任意のコード/ツールで知ることができますか?(システム:Ubuntu)

編集: プログラムの完全な時間を与える time ./a.out として与えることができる時間を知るためのように.

4

8 に答える 8

3

プログラムを起動すると同時に、別のターミナル ウィンドウで次のように入力します。

top

これにより、システムで実行されているものに関する情報が得られます: CPU 使用率、メモリ、ユーザー、時間...

于 2012-10-22T17:09:43.380 に答える
1

コードがあり、それをコンパイルした場合は、valgrind . このコンソール ツールは、ヒープの概要を出力し、割り当てられたメモリのうちどれだけがメモリ エラーで失われたか、およびコード上のそれらの位置を出力します。

于 2012-10-22T17:42:09.907 に答える
1

配列のメモリ要件を確認するには、 sizeof関数を使用して配列全体のサイズを確認します。

cout << "bytes used: " << sizeof(arrey) << endl;

各要素の記憶を見つけるには:

cout << "byte per element: " << sizeof(int) << endl;
于 2012-10-22T17:10:21.100 に答える
0

次の Linux コマンドを使用して、システム メモリの使用状況に関する統計を取得します。

$ free
...
$ cat /proc/meminfo
...
于 2012-10-22T17:08:56.420 に答える
0

/proc/self/statm独自のアプリケーション内から、(順次) などを読み取ることができます。ファイルシステムの/proc/self/maps詳細については、 proc(5)のマニュアル ページを参照してください。/proc

(C ソース コードの静的解析によってメモリ消費量を制限することは、一般的に困難または不可能です)

于 2012-10-22T19:14:49.470 に答える
0

コマンドを使用psすると、プロセスによって割り当てられたメモリ ページの量を取得できます。これは完全なインデックスではありません。さらに精度が必要な場合は、 gperftoolsなどのメモリ プロファイラーを使用します。

于 2012-10-22T17:10:34.600 に答える
0

sizeof を使用するだけですcout<<sizeof(arrey);

于 2012-10-22T17:11:30.100 に答える
-3

1000 * 4 = 4000、スタック上。

于 2012-10-22T17:10:37.813 に答える