• C++得到当前进程所占用的内存




    使用SDK的PSAPI (Process Status Helper)
    中的
    BOOL GetProcessMemoryInfo(
      HANDLE Process,
      PPROCESS_MEMORY_COUNTERS ppsmemCounters,
      DWORD cb
    );


    typedef struct _PROCESS_MEMORY_COUNTERS {
      DWORD cb;
      DWORD PageFaultCount;
      SIZE_T PeakWorkingSetSize; //峰值内存使用
      SIZE_T WorkingSetSize; //内存使用
      SIZE_T QuotaPeakPagedPoolUsage;
      SIZE_T QuotaPagedPoolUsage;
      SIZE_T QuotaPeakNonPagedPoolUsage;
      SIZE_T QuotaNonPagedPoolUsage;
      SIZE_T PagefileUsage; //虚拟内存使用
      SIZE_T PeakPagefileUsage; //峰值虚拟内存使用
    } PROCESS_MEMORY_COUNTERS, 
    *PPROCESS_MEMORY_COUNTERS;

    #include <iostream>
    #include <windows.h>
    #include <psapi.h>
    #pragma comment(lib,"psapi.lib")
    using namespace std;
    void showMemoryInfo(void)
        {
        HANDLE handle=GetCurrentProcess();
        PROCESS_MEMORY_COUNTERS pmc;
        GetProcessMemoryInfo(handle,&pmc,sizeof(pmc));
        cout<<"内存使用:"<<pmc.WorkingSetSize/1000 <<"K/"<<pmc.PeakWorkingSetSize/1000<<"K + "<<pmc.PagefileUsage/1000 <<"K/"<<pmc.PeakPagefileUsage/1000 <<"K"<<endl;
        }
    int main(int argc,char* argv)
        {
        showMemoryInfo();
        cout<<"回收所有可回收的内存"<<endl;
        EmptyWorkingSet(GetCurrentProcess());
        showMemoryInfo();
        cout<<"开始动态分配内存"<<endl;
        char* buf[5];
        for(int i=0;i<sizeof(buf)/sizeof(char*);i++)
            {
            buf[i]=new char[102400];
            showMemoryInfo();
            }
        cout<<"开始释放内存"<<endl;
        for(int i=0;i<sizeof(buf)/sizeof(char*);i++)
            {
            delete buf[i];
            buf[i]=NULL;
            showMemoryInfo();
            }
        cout<<"回收所有可回收的内存"<<endl;
        EmptyWorkingSet(GetCurrentProcess());
        showMemoryInfo();
        return 0;
        }





    输出:
    内存使用:1339K/1339K + 356K/356K
    回收所有可回收的内存
    内存使用:114K/1425K + 356K/356K
    开始动态分配内存
    内存使用:430K/1425K + 466K/466K
    内存使用:438K/1425K + 573K/573K
    内存使用:446K/1425K + 679K/679K
    内存使用:454K/1425K + 786K/786K
    内存使用:462K/1425K + 892K/892K
    开始释放内存
    内存使用:462K/1425K + 794K/892K
    内存使用:454K/1425K + 692K/892K
    内存使用:446K/1425K + 589K/892K
    内存使用:438K/1425K + 487K/892K
    内存使用:425K/1425K + 360K/892K
    回收所有可回收的内存
    内存使用:110K/1425K + 360K/892K
  • 相关阅读:
    【JZOJ3360】【NOI2013模拟】苹果树
    【SDOI2009】【BZOJ1878】HH的项链
    【JZOJ3234】阴阳
    【BZOJ3482】【JZOJ3238】[COCI2013]hiperprostor 超空间旅行
    【JZOJ3348】【NOI2013模拟】秘密任务 (Standard IO) (最小割唯一性的判定)
    【JZOJ4665】【CF407E】k-d-sequence
    【SHTSC2013】阶乘字符串
    【SHTSC2013】超级跳马
    半平面交笔记
    转:Why SeaJS
  • 原文地址:https://www.cnblogs.com/nafio/p/9137637.html
Copyright © 2020-2023  润新知