这段代码实现在类构造函数中获取进程内存的使用,在析构时打印出进程内存使用的改变量。
class CAutoMem
{
public:
CAutoMem(char* vInfo):strMem(vInfo){
Init();
}
~CAutoMem(){
PrintMem();
}
void Init()
{
dwPrcID = GetCurrentProcess();
PROCESS_MEMORY_COUNTERS pmc;
GetProcessMemoryInfo((HANDLE)dwPrcID, &pmc, sizeof(pmc));
dwMemSize = pmc.WorkingSetSize;
}
void PrintMem()
{
PROCESS_MEMORY_COUNTERS pmc;
GetProcessMemoryInfo((HANDLE)dwPrcID, &pmc, sizeof(pmc));
if(pmc.WorkingSetSize > dwMemSize)
{
if(pmc.WorkingSetSize - dwMemSize > 1024)
{
printf("%s内存申请 %d\n\n", strMem.c_str(), (pmc.WorkingSetSize - dwMemSize)/1024);
}
}
else
{
if(pmc.WorkingSetSize - dwMemSize > 1024)
{
printf("%s内存释放 %d\n\n", strMem.c_str(), (dwMemSize - pmc.WorkingSetSize)/1024);
}
}
}
public:
string strMem;
HANDLE dwPrcID;
DWORD dwMemSize;
};