私のプログラムにはメモリの問題がある可能性があるため、さまざまなツールから提供されるメモリ使用量に関する情報を見つけようとしています。その原因を探るべく、簡単な実験も行っています。リリース モードでは、次のコードを追加します。
pChar = new char[((1<<30)/2)];
for(int i; i < ((1<<30)/2); i++)
{
pChar[i] = i % 256;
}
コードが実行されても、Windows タスク マネージャーで使用可能な物理メモリは変化しません。私の見解では、コンパイラはパフォーマンスを向上させるためにコードを削除する可能性があります。変数を 1 つのグローバル変数として宣言します。うまくいきません。ただし、デバッグ モードでは、Windows タスク マネージャーで使用可能な物理メモリが期待どおりに変化します。私はそれを理解できません。
別の質問があります。物理メモリが不足した場合、新しい操作は仮想メモリからメモリを割り当てますか。または、1 つの例外がスローされますか?