Win32API システムのメモリ使用状況を取得する GlobalMemoryStatus

使用するAPI

  • GlobalMemoryStatus

  • この関数は、搭載しているメモリが4GB以下のときのみ使用すべき。




    MEMORYSTATUS構造体は、winbase.h にて以下のように定義されている

    typedef struct _MEMORYSTATUS {
        DWORD dwLength; // Size of (MEMORYSTATUS).
        DWORD dwMemoryLoad; // Percent of memory in use.
        SIZE_T dwTotalPhys; // Bytes of physical memory.
        SIZE_T dwAvailPhys; // Free physical memory file.
        SIZE_T dwTotalPageFile; // Bytes of paging file.
        SIZE_T dwAvailPageFile; // Free bytes of paging file.
        SIZE_T dwTotalVirtual; // User bytes of address space.
        SIZE_T dwAvailVirtual; // Free user bytes.
    } MEMORYSTATUS, *LPMEMORYSTATUS;



    GlobalMemoryStatus関数を使用したサンプルプログラム

    #include <windows.h>
    
    int main()
    {
    	MEMORYSTATUS ms;
    
    	GlobalMemoryStatus(&ms); 
    
    	printf("AvailPageFile = %u\n", ms.dwAvailPageFile);
    	printf("AvailPhys = %u\n", ms.dwAvailPhys);
    	printf("AvailVirtual = %u\n", ms.dwAvailVirtual);
    	printf("Length = %u\n", ms.dwLength);
    	printf("MemoryLoad = %u\n", ms.dwMemoryLoad);
    	printf("TotalPageFile = %u\n", ms.dwTotalPageFile);
    	printf("TotalPhys = %u\n", ms.dwTotalPhys);
    	printf("TotalVirtual = %u\n", ms.dwTotalVirtual);
    
    	return 0;
    }