如何确定进程"虚拟大小"(WinXP)?

the*_*ler 10 c c++ windows memory-management

我有一个需要大量内存的程序,一旦达到2GB虚拟地址空间就会崩溃.Sysinternals进程资源管理器将其显示为"虚拟大小"列.如何用C(或C++)代码确定这个"虚拟大小"?

好的,我必须查询"虚拟字节"的性能计数器.Perfmon在我的德语Win XP安装中显示查询字符串(或它的调用方式),例如'\ Process(firefox)\VirtuelleGröße'.

如何确定"当前进程"的查询字符串,是否有非本地化名称?

dal*_*lle 8

根据MSDN:内存性能信息 PROCESS_MEMORY_COUNTERS_EX.PrivateUsage与Windows XP中任务管理器中的VM大小相同.GetProcessMemoryInfo应该工作:

PROCESS_MEMORY_COUNTERS_EX pmcx = {};
pmcx.cb = sizeof(pmcx);
GetProcessMemoryInfo(GetCurrentProcess(),
    reinterpret_cast<PROCESS_MEMORY_COUNTERS*>(&pmcx), pmcx.cb);
Run Code Online (Sandbox Code Playgroud)

现在pmcx.PrivateUsage保存进程的VM Size.

  • 虽然虚拟机大小也不是我正在寻找的MSDN页面,但你提到了我需要的东西:MEMORYSTATUSEX.ullTotalVirtual-MEMORYSTATUSEX.ullAvailVirtual (7认同)