【问题标题】:Practical Usage of Virtual Memory虚拟内存的实际使用
【发布时间】:2012-02-07 10:42:46
【问题描述】:

我用过代码

MEMORYSTATUSEX memInfo;
memInfo.dwLength = sizeof(MEMORYSTATUSEX);
GlobalMemoryStatusEx(&memInfo);
DWORDLONG totalVirtualMem = memInfo.ullTotalPageFile;
DWORDLONG virtualMemUsed = memInfo.ullTotalPageFile - memInfo.ullAvailPageFile;
DWORDLONG totalPhysMem = memInfo.ullTotalPhys;

提供于here

输出如下:2.3GB。

totalVirtualMem = 8.5 Gb
virtualMemUsed  = 2.3 Gb
totalPhysMem    = 4   Gb

这是否意味着我的程序需要 2.3Gb 的内存?您能否评论一下总虚拟内存和 RAM?我也无法运行此代码:

PROCESS_MEMORY_COUNTERS_EX pmc;
GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc));
SIZE_T virtualMemUsedByMe = pmc.PrivateUsage;

因为它给出了错误,

error C2664: 'GetProcessMemoryInfo' : cannot convert parameter 2 from 'PROCESS_MEMORY_COUNTERS_EX *' to 'PPROCESS_MEMORY_COUNTERS'

【问题讨论】:

    标签: memory virtual


    【解决方案1】:

    我偶然发现了完全相同的问题,并发现一个简单的类型转换为我解决了这个问题。

    PROCESS_MEMORY_COUNTERS_EX pmc;
    GetProcessMemoryInfo(GetCurrentProcess(), (PROCESS_MEMORY_COUNTERS*)&pmc, sizeof(pmc));
    SIZE_T virtualMemUsedByMe = pmc.PrivateUsage;
    

    解决方案也描述了here (msdn: Question about GetProcessMemoryInfo)

    【讨论】:

      猜你喜欢
      • 2018-11-12
      • 2013-10-21
      • 2011-12-31
      • 2016-03-24
      • 2018-07-09
      • 1970-01-01
      • 2014-12-16
      • 2014-08-06
      • 2013-12-03
      相关资源
      最近更新 更多