すべて 私のプログラムにはメモリの問題がある可能性があるので、さまざまなツールで提供されるメモリ使用量に関する情報を見つけようとします。原因を見つけるために、私は簡単な実験も行います。リリースモードで は、私は、コードが実行されると、Windowsのタスクマネージャで使用可能な物理メモリが変更されませんmomoryが割り当てられたときにタスクマネージャの物理メモリが変更されない
pChar = new char[((1<<30)/2)];
for(int i; i < ((1<<30)/2); i++)
{
pChar[i] = i % 256;
}
、次のコードを追加します。私の見解では、コンパイラはパフォーマンスを向上させるためにコードを削除することがあります。変数を1つのグローバル変数として宣言します。それは動作しません。しかし、デバッグモードでは、Windowsタスクマネージャの使用可能な物理メモリが期待どおりに変更されます。私はそれを理解できません。
私は別の質問があります。物理メモリが不足している場合、新しいオペレーションは仮想メモリからメモリを割り当てますか?または1つの例外がスローされますか?
ありがとうございました。メモリが仮想メモリに割り当てられている場合、プログラムの実行速度が低下しますか?コンパイラやOSによって決定されますか? –
すべての割り当ては仮想メモリに対して行われるため、「仮想メモリ上の遅い場合」という質問は意味をなさないので、決定はしません。 RAMは後で、OSによって割り当てられ、必要な場合にのみ割り当てられ、割り当てには割り当てられません。 – MSalters