我想寫一個自定義的內存管理器和現在我分配的字節像一個全局數組:物理和虛擬內存visual C++之間的區別?
char g_retail_memory[512*MB];
當我再看看在Windows 7的資源,監視它的報告,圍繞512 MB的虛擬內存已被分配。有人可以請解釋爲什麼我沒有得到物理內存?如果我使用malloc()而不是物理內存。難道我做錯了什麼?在那種情況下,有沒有一種在visual C++下獲取物理內存的正確方法?
我想寫一個自定義的內存管理器和現在我分配的字節像一個全局數組:物理和虛擬內存visual C++之間的區別?
char g_retail_memory[512*MB];
當我再看看在Windows 7的資源,監視它的報告,圍繞512 MB的虛擬內存已被分配。有人可以請解釋爲什麼我沒有得到物理內存?如果我使用malloc()而不是物理內存。難道我做錯了什麼?在那種情況下,有沒有一種在visual C++下獲取物理內存的正確方法?
見http://en.wikipedia.org/wiki/Virtual_memory
你分配也將是虛擬內存中的所有物理內存,因爲虛擬機是系統出現內存在現代操作系統中應用程序的方式。你可能看不到某些分配的原因可能是內存從未被使用過,所以操作系統實際上並不需要爲它尋找物理內存,但是當/如果內存被第一次使用時,它將會被找到。
請注意,如果操作系統需要其他應用程序,虛擬內存的後備物理內存可以稍後「消失」。這有時被稱爲「交換」或「分頁」。
你怎麼確定你正在用malloc獲得「物理內存」? – Mat 2011-03-19 19:14:17
就像我決定沒有得到它...... :)通過Windows資源管理器,但正如我在下一篇文章中所瞭解到的,這些信息可能不正確:) – abbec 2011-03-19 20:36:05