我经常看到 VirtualAlloc 调用保留内存失败。我请求 2MB,以便分配不计入我的每个进程虚拟内存,而是使用系统共享内存。发生故障时,系统报告物理内存超过 100 MB。
我正在 Windows Mobile 6.1 设备上运行。到目前为止,这是一个特定于设备的问题。它可以在许多相同的设备上运行,但在一台设备上会失败。我希望能够确定该设备上的其他进程是否正在保留共享内存,从而阻止我这样做。但不确定我该如何做到这一点。
这是我所依赖的文档,我没有看到任何可以解释这个问题的内容: http://msdn.microsoft.com/en-us/library/aa908768.aspx
有什么想法吗?谢谢。
最佳答案
我很想说,VirtualAlloc
已经用完了(连续的)虚拟地址空间,至少就您的进程而言是这样。
我首先尝试建立 to which memory slot那些之前成功的 VirtualAlloc block 被映射到,并基于此查看我正在与谁争夺地址空间。您应该能够通过编程或使用 a tool from William J. Blanke 来完成此操作(或other similar tools。)
关于windows - 尽管 WinMobile 上有足够的物理内存,VirtualAlloc 怎么会失败(没有内存)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2420853/