記憶體使用量情況查看類

來源:互聯網
上載者:User

 記憶體使用量情況查看類

class CMemoryUserge{protected:  typedef struct _MEMORYSTATUS_EX {    DWORD dwLength;             // sizeof(MEMORYSTATUSVLM)     DWORD dwMemoryLoad;         // percent of memory in use     DWORDLONG dwTotalPhys;     // bytes of physical memory     DWORDLONG dwAvailPhys;     // free physical memory bytes     DWORDLONG dwTotalPageFile; // bytes of paging file     DWORDLONG dwAvailPageFile; // free bytes of paging file     DWORDLONG dwTotalVirtual;  // user bytes of address space     DWORDLONG dwAvailVirtual;  // free user bytes     DWORDLONG dwAvailExtendedVirtual;  } MEMORYSTATUS_EX, *LPMEMORYSTATUS_EX;   typedef VOID (WINAPI *GLOBALMEMORYSTATUSEX)( LPMEMORYSTATUS_EX lpBuffer );  GLOBALMEMORYSTATUSEX pGlobalMemoryStatusVlm;  MEMORYSTATUS_EX memStatus, memSave;    CString PrintfULLData(ULONGLONG uLL)  {    char buffer[129]={0};     _ui64toa(uLL, buffer, 10);        char buffer2[129]={0};    int i=0;    int j=0;    int k=strlen(buffer);    int l=(k/3) + ((k%3)?1:0);    int m=(k-l*3) > 0 ? (k-l*3):(3+(k-l*3));    while(k--)    {      buffer2[i++] = buffer[j++];      if((--m % 3 == 0) && k)      {        buffer2[i++] = ',';        m=3;      }    }    buffer2[i] = '\0';    //補足XX位    {      k = strlen(buffer2);      j = 18-k;      if(j > 0)      {        strcpy(buffer, buffer2);        memset(buffer2, 0, sizeof(buffer2));        for(i=0; i<j; i++)          buffer2[i] = ' ';        strcat(buffer2, buffer);      }          }        return CString(buffer2);  }public:  CMemoryUserge()  {    pGlobalMemoryStatusVlm = NULL;        HMODULE hLib = LoadLibrary(_T("kernel32.dll"));    if(hLib)    {      pGlobalMemoryStatusVlm =         (GLOBALMEMORYSTATUSEX)GetProcAddress(hLib, "GlobalMemoryStatusEx");      FreeLibrary(hLib);    }    memset(&memSave, 0, sizeof(memSave));    memset(&memStatus, 0, sizeof(memStatus));  }public:  BOOL GetMemoryInfo(CString & szMemInfo, BOOL bForce=FALSE)  {    BOOL bUpdate=FALSE;        if(pGlobalMemoryStatusVlm)    {      memStatus.dwLength = sizeof(memStatus);      pGlobalMemoryStatusVlm( &memStatus );    }    else    {      MEMORYSTATUS tmpStatus={0};      tmpStatus.dwLength = sizeof(tmpStatus);      GlobalMemoryStatus( &tmpStatus );      memStatus.dwMemoryLoad = tmpStatus.dwMemoryLoad;         // percent of memory in use       memStatus.dwTotalPhys = tmpStatus.dwTotalPhys;     // bytes of physical memory       memStatus.dwAvailPhys = tmpStatus.dwAvailPhys;     // free physical memory bytes       memStatus.dwTotalPageFile = tmpStatus.dwTotalPageFile; // bytes of paging file       memStatus.dwAvailPageFile = tmpStatus.dwAvailPageFile; // free bytes of paging file       memStatus.dwTotalVirtual = tmpStatus.dwTotalVirtual;  // user bytes of address space       memStatus.dwAvailVirtual = tmpStatus.dwAvailVirtual;  // free user bytes       memStatus.dwAvailExtendedVirtual = 0;    }    if(bForce || memcmp(&memSave, &memStatus, sizeof(memSave)))    {      szMemInfo.Format(        _T("memory in use = %lu%%\r\n")        _T("total physical memory       = %s\r\n")        _T("free physical memory        = %s\r\n")        _T("total bytes of paging file  = %s\r\n")        _T("free bytes of paging file   = %s\r\n")        _T("user bytes of address space = %s\r\n")        _T("free in virtual address     = %s\r\n"),        memStatus.dwMemoryLoad,        PrintfULLData(memStatus.dwTotalPhys),        PrintfULLData(memStatus.dwAvailPhys),        PrintfULLData(memStatus.dwTotalPageFile),        PrintfULLData(memStatus.dwAvailPageFile),        PrintfULLData(memStatus.dwTotalVirtual),        PrintfULLData(memStatus.dwAvailVirtual)        );            memSave = memStatus;      bUpdate = TRUE;    }        return bUpdate;  }};

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.