のcalloc後に反射しないC:メモリ使用量は、私が実行
のcalloc(* 1024×1024×1024、はsizeof(INT))。
私は私のプログラムの使用状況を確認し、それがゼロだが、私は
free
編集に電話をしたことはありません:私は
:Debianのジェシー
編集2を実行
上部をシステムモニタとして使用する
のcalloc後に反射しないC:メモリ使用量は、私が実行
のcalloc(* 1024×1024×1024、はsizeof(INT))。
私は私のプログラムの使用状況を確認し、それがゼロだが、私はfree
編集に電話をしたことはありません:私は
:Debianのジェシー
編集2を実行
上部をシステムモニタとして使用する
Linuxはレイジーメモリ割り当てを行いません。割り当てられているとマークされたページでページフォルトが発生した場合に限り、Linuxは実際には使用されていると見なします。割り当てられたデータ内のバイトに書き込みを行い、メモリ使用量を再度確認してください。 Linuxでのメモリ割り当ての詳細については、http://www.tldp.org/LDP/tlk/mm/memory.htmlを参照してください。
さらに、callocは割り当てられたメモリをゼロにしても、記述した振る舞いにつながるレイジーなやり方で実行できます。 How to lazy allocate zeroed memory?を参照してください。
を示してください。値を4GBに変更したところ、値をランダムな整数に設定したときにしか動きませんでした。 – peter
あなたの例では数Kしか割り当てられませんが、見た目は小さすぎるかもしれません。しかし、はるかに大量のメモリを要求する場合でも、実際にメモリを使用するまで使用量は表示されません。
デフォルトでは、Linuxは何らかの方法でメモリページに触れるまで、メモリページを実際に割り当てません。 callocはメモリをゼロに初期化することになっていますが、これは内部的に初期化されていないページを追跡し、読み込み時に0を返すため、メモリに触れると数えません。
メモリの使用状況をどのように確認したか、他の人が実際に何を意味しているかなど、あなたの質問に関する詳細情報を提供してください。 – oxnz
一番上で見たのはどの列ですか?トッププログラムがメモリ使用量を最寄のMBまたはMBの1/10に丸めていないことは確かですか? – nos
私たちはあなたが何をコードしようとしているのか、何を推測すべきでしょうか?私は参照してくださいいくつかのコード – Michi