我想写一个自定义的内存管理器和现在我分配的字节像一个全局数组:物理和虚拟内存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