1

カスタムメモリマネージャーを作成しようとしていますが、現在、次のようなバイトのグローバル配列を割り当てています:

char g_retail_memory[512*MB];

その後、Windows 7 のリソース モニターを見ると、約 512 MB の仮想メモリが割り当てられていることが報告されています。物理メモリを取得できない理由を誰かが説明してもらえますか? 代わりに malloc() を使用すると、物理メモリが得られます。私は何か間違ったことをしていますか?その場合、Visual C++ で物理メモリを取得する正しい方法はありますか?

4

1 に答える 1

2

http://en.wikipedia.org/wiki/Virtual_memoryを参照してください

VM は、最新のオペレーティング システムでシステムがアプリケーションにメモリを提示する方法であるため、割り当てるすべての物理メモリも仮想メモリになります。一部の割り当てが物理として表示されない理由は、メモリが使用されていない可能性があるため、OS が物理メモリを実際に検索する必要はありませんでしたが、メモリが最初に使用されたとき/場合に検出されます。

OS が別のアプリケーションでそれを必要とする場合、仮想メモリのバッキング物理メモリは後で「なくなる」可能性があることに注意してください。これは、「スワッピング」または「ページング」と呼ばれることもあります。

于 2011-03-19T19:18:34.060 に答える