vc获取2G以上内存方法

来源:百度知道 编辑:UC知道 时间:2024/05/05 13:08:34
MEMORYSTATUS mem;
mem.dwLength=sizeof(mem);
GlobalMemoryStatus(&mem);
最大只能获取2G内存,2048M,有什么函数可以获取2G以上呢,比如4G,8G

...你怎么有这种需求...
Windows核心编程上 有关于获取3G内存的方法 具体自己参考

32位机器 应用程序最多就是3G内存 不能多
要多 就要换64位机器

windows为了保护自己,不允许一次申请过太大内存。

再说,什么样的程序会一次需要2GB一上的内存呢? 多次申请就可以了

最大只能获取2G内存是对的。
在32位的Windows XP系统中,系统默认只能识别3点G的内存,理论上可以使用4GB内存,但是在操作系统设计中,系统中的高2GB内存保留给系统,用户程序只能使用低2GB的内存,因此所有的应用软件最大只能使用2GB内存。

可以修改Boot.ini添加/3GB开关,使得应用软件可以使用到3G的内存空间(操作系统只使用1G)。
使用更大的内存,就要用64位版本的操作系统或者服务器版本的操作系统。
可以参考:http://hi.baidu.com/shammah/blog/item/f4c29efb49528d62024f56f7.html

获取2G以上的内存,不太可靠,第一这受实际物理内存的限制,虽然Windows通过386的分页机制实现虚拟内存,但是超出物理内存太大的是不成功的;第二如果你用的是32位的CPU,那么你是不可能寻址4G以上的内存的,因为32位地址线最多只能寻址4G,不过某些奔腾处理器可以实现物理地址扩展,最多可以寻址36G.你可能说我用的是64位的CPU啊,光有64位的CPU没用,因为64位CPU是说你可以向他提供64位的地址,可我们向他提供32位地址还是只能寻址4G,因此还要64位的操作系统,现在Windows系列的64位操作系统只有Vista/Win7以及XP还有个64位的版本,光有这两样没用,你还要有64位的程序,因为你向操作系统提供32位地址还是4G,现在几乎没有64位的程序,开发64程序要VS2008;第三,你想在Ring3申