#include <iostream>
#include <iomanip>
#pragma comment (lib, "psapi.lib") // Add 'psapi.lib' to your linker options
#include <windows.h>
#include <psapi.h>
using namespace std;
int main()
{
// Open current process
HANDLE hProcess = ::OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, ::GetCurrentProcessId());
if(hProcess)
{
PROCESS_MEMORY_COUNTERS ProcessMemoryCounters;
memset(&ProcessMemoryCounters, 0, sizeof(ProcessMemoryCounters));
// Set size of structure
ProcessMemoryCounters.cb = sizeof(ProcessMemoryCounters);
// Get memory usage
if(::GetProcessMemoryInfo(hProcess,
&ProcessMemoryCounters,
sizeof(ProcessMemoryCounters)) == TRUE)
{
std::cout << std::setfill('0') << std::hex
<< "PageFaultCount: 0x" << std::setw(8)
<< ProcessMemoryCounters.PageFaultCount << std::endl
<< "PeakWorkingSetSize: 0x" << std::setw(8)
<< ProcessMemoryCounters.PeakWorkingSetSize << std::endl
<< "WorkingSetSize: 0x" << std::setw(8)
<< ProcessMemoryCounters.WorkingSetSize << std::endl
<< "QuotaPeakPagedPoolUsage: 0x" << std::setw(8)
<< ProcessMemoryCounters.QuotaPeakPagedPoolUsage << std::endl
<< "QuotaPagedPoolUsage: 0x" << std::setw(8)
<< ProcessMemoryCounters.QuotaPagedPoolUsage << std::endl
<< "QuotaPeakNonPagedPoolUsage: 0x" << std::setw(8)
<< ProcessMemoryCounters.QuotaPeakNonPagedPoolUsage << std::endl
<< "QuotaNonPagedPoolUsage: 0x" << std::setw(8)
<< ProcessMemoryCounters.QuotaNonPagedPoolUsage << std::endl
<< "PagefileUsage: 0x" << std::setw(8)
<< ProcessMemoryCounters.PagefileUsage << std::endl
<< "PeakPagefileUsage: 0x" << std::setw(8)
<< ProcessMemoryCounters.PeakPagefileUsage <<std::endl;
}
else
std::cout << "Could not get memory usage (Error: "
<< ::GetLastError() << ")" << std::endl;
// Close process
::CloseHandle(hProcess);
}
else
std::cout << "Could not open process (Error "
<< ::GetLastError() << ")" << std::endl;
return 0;
}
#pragma comment(lib,"Ws2_32.lib")表示链接Ws2_32.lib这个库。和在工程设置里写上链入Ws2_32.lib的效果一样,不过这种方法写的程序别人在使用你的代码的时候就不用再设置工程settings了。