1

そこで、Windows XPでヒープオーバーフローを実行しようとするとどうなるかを自問していましたが、プログラムがすべてのRAMを「消費」すると(ちなみに、これは即座に発生します)、タスクマネージャのプロセスは5MBになり、その後は移動しません。ただし、コンピュータのメモリ使用量はまだ増え続けています。

では、なぜWindowsは私のソフトウェアがGBのメモリを使用していることを認識できないのでしょうか。ソフトウェアがすべてのメモリを使い果たすと、小さなプロセスグループに「隠れて」しまう可能性があるため、セキュリティ上の問題になる可能性があると感じています(おそらく私は少し偏執的です)。

注:ヒープがいっぱいになると何も起こりません。mallocが失敗すると、for(;;)ループが狂ったように実行されるため、CPUは100%にジャンプします。

編集:わかりました!タスクマネージャの列を微調整できることを知らなかった。私は今日何かを学びました:D。

4

2 に答える 2

0

タスクマネージャを開いて、[表示]> [列の選択...]に移動し、さらに多くのメモリ列をオンにしてみてください。プログラムがはるかに多くのメモリを使用している可能性がありますが、タスクマネージャで表示しているタイプではありません

XPの下では、あなたが興味を持つであろう仮想メモリの列があるかもしれないと思います

于 2009-09-23T13:28:33.863 に答える
0

興味深い実験..デフォルトでは、タスクマネージャはデフォルトのワーキングセットを表示します。ページプールと非ページプール、ワーキングセットなど、他のメモリフィールドがあります。ページフォールトは、プログラムがメモリの割り当てを試みているが失敗していることも示しています。

于 2009-09-23T13:32:38.707 に答える