2012-01-11 12 views
5

He utilizado el códigouso práctico de la memoria virtual

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

proporcionada en here

de salida es igual: 2,3 GB.

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

¿Esto significa que mi programa requiere 2.3Gb de memoria? ¿Podría comentar también sobre memoria virtual total y RAM? También yo no era capaz de ejecutar este código:

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

, ya que da el error como,

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

Respuesta

6

yo nos topamos con exactamente el mismo problema, y ​​se informó de que un tipo simple elenco resuelto por mí.

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

La solución también se describe here (msdn: Question about GetProcessMemoryInfo).

Cuestiones relacionadas