4

私の主要なアプリケーションは、実行時にクラッシュします。

これがシステムによるメモリ割り当ての問題に関連しているかどうかを確認したいと思います。したがって、1 GB のメモリを割り当てる小さなテスト プログラムを作成し、同時に 15 のそのようなプロセスを実行したため、合計で 15 GB の RAM を使用しました。

しかし、このプログラムを実行すると、タスク マネージャーは 2GB の RAM しか占有していないと表示しますか? そんなことがあるものか?

以下のようにサンプルコードを書きました

char *ptr[1024];
for ( i = 0 ; i < 1024 ; ++i )
{
    ptr[i] = new char[1024 * 1024];
    std::cout << " Allocated 1024 MB" << i << " th time " << std::endl;
}
4

5 に答える 5

8

大きな配列にデータを格納してみてください。Memsetはうまくいくでしょう。実際のメモリに触れていない場合は、おそらく実際のメモリを見ていますが、これらはまだ仮想メモリ内にある可能性があります。

于 2013-08-23T21:07:11.913 に答える
0

http://en.wikipedia.org/wiki/Virtual_memory

基本的に、ページファイルにデータを入力しています。OS は、大量のデータが割り当てられていることを認識しますが、それを使用するまで、このデータはページ ファイルからメイン メモリに取り込まれません。

于 2013-08-23T21:17:28.203 に答える