malloc
繰り返し呼び出すことでメモリをリークする、迅速で汚いプログラムを作成しました。プログラムをデバッグ構成(VS 2012)で実行すると、プログラムがギガバイトのメモリを正しく消費し、ページファイルがいっぱいになるまで続行することに気付きました(Windowsタスクマネージャーが高いワーキングセットサイズを報告します)。ただし、プログラムをリリースモードで実行すると、プログラムのワーキングセットサイズは小さいままですが、コミットサイズは大きくなり続けます。また、ディスクのスラッシングやページの障害も著しく少なくなります。
MSDNのドキュメントには、デバッグモードの場合malloc
はにマップされると_malloc_dbg
記載されていますが、両方ともヒープにメモリを割り当て、デバッグ情報用に追加のメモリのみを_malloc_dbg
割り当てると記載されています-異なるヒープ動作については言及されていません(つまり、そうでない理由)リリースモードのプライベートワーキングセットに表示されます)。
何が起こっているのか教えてください