【发布时间】:2011-11-20 23:57:51
【问题描述】:
我的进程可用的虚拟内存量为 32MB,但实际 RAM 更多。有没有办法(例如函数调用或项目属性)可以增加这个限制?我发现限制非常......限制。
我正在通过调用GlobalMemoryStatusEx 查看使用情况。如果有什么东西可以设置 dwTotalVirtual 成员,那会有所帮助。
谢谢!
【问题讨论】:
标签: c++ c winapi windows-mobile
我的进程可用的虚拟内存量为 32MB,但实际 RAM 更多。有没有办法(例如函数调用或项目属性)可以增加这个限制?我发现限制非常......限制。
我正在通过调用GlobalMemoryStatusEx 查看使用情况。如果有什么东西可以设置 dwTotalVirtual 成员,那会有所帮助。
谢谢!
【问题讨论】:
标签: c++ c winapi windows-mobile
不,没有办法增加它。 Windows CE 5.0 和更早的版本对于支持的 32 个同时处理的任何进程都有一个硬性的 32MB 虚拟内存限制。它是内核的一部分。
现在值得一提的是,并非所有分配都来自这 32MB。来自文档(和经验):
如果调用VirtualAlloc 时dwSize >= 2 MB,flAllocationType 设置为MEM_RESERVE,flProtect 设置为PAGE_NOACCESS,它会自动在共享内存区域中保留内存。这会保留每个进程的虚拟内存。
这意味着您可以 VirtualAlloc 大区域并在不影响您的 32MB 插槽限制的情况下使用它。
【讨论】: