2012-01-11 34 views
5

Tôi đã sử dụng mãCách sử dụng thực tế của Virtual Memory

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

cung cấp tại here

Output giống như: 2.3GB.

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

Điều này có nghĩa là chương trình của tôi yêu cầu bộ nhớ 2.3Gb? Bạn cũng có thể bình luận về tổng số bộ nhớ ảo và RAM? Ngoài ra tôi đã không thể chạy mã này:

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

như nó mang lại cho lỗi như,

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

Trả lời

6

tôi stumbled khi chính xác cùng một vấn đề và phát hiện ra rằng một loại diễn viên đơn giản giải quyết nó cho tôi.

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

Giải pháp cũng được mô tả here (msdn: Question about GetProcessMemoryInfo).

Các vấn đề liên quan