c++ - 如何判断一个进程 "virtual size"(WinXP)?

标签 c++ c windows memory-management

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

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

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

最佳答案

根据 MSDN: Memory Performance Information 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);

现在 pmcx.PrivateUsage 保存进程的 VM 大小。

关于c++ - 如何判断一个进程 "virtual size"(WinXP)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/548819/

相关文章:

c - 线程无法计数,给出错误的结果

c - 读取文件,将其反转并将其写入另一个文件

c - C中的数组和排序

ios - 是否可以通过 USB 端口将 iOS 应用程序与 Windows 计算机进行通信?

python - 如何修复 Python 3.x 中 input() 函数中的 NameError?

windows - Windows 上的 flutter : how to call an external dll?

c++ - 使用 SWIG 用虚拟方法包装 C++ 类并在 python 中覆盖它们

c++ - 如何使用 C++ 获取 powershell 命令的输出?

c++ - 检查窗口是否失去焦点

c++ - 在 GDI 中设置像素的性能高效方式