Для отслеживании инормации о загрузке памяти
в С++ имеется функция GlobalMemoryStatus, которая возвращает информацию о используемой системой памяти.
Ниже приведен синтаксис структуры GlobalMemoryStatus:
1 |
VOID GlobalMemoryStatus( LPMEMORYSTATUS lpBuffer ); |
Функция GlobalMemoryStatus возвращает набор данных, которые отображают загруженность физической и виртуальной памяти в процентах и в байтах.
1 2 3 4 5 6 7 8 9 10 |
typedef struct _MEMORYSTATUS { DWORD dwLength; // длина структуры в байтах DWORD dwMemoryLoad; // загрузка памяти в процентах SIZE_T dwTotalPhys; // максимальное количество физической памяти в байтах SIZE_T dwAvailPhys; // свободное количество физической памяти в байтах SIZE_T dwTotalPageFile; // макс. кол. памяти для программ в байтах SIZE_T dwAvailPageFile; // свободное кол. памяти для программ в байтах SIZE_T dwTotalVirtual; // максимальное количество виртуальной памяти в байтах SIZE_T dwAvailVirtual; // свободное количество виртуальной памяти в байтах } MEMORYSTATUS, *LPMEMORYSTATUS; |
Возвращаемое значение: эта функция не возвращает параметров
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#include <windows.h> #include <stdio.h> #define DIV 1024 // #define DIV 1 char *divisor = "K"; #define WIDTH 7 void main(int argc, char *argv[]){ MEMORYSTATUS stat; GlobalMemoryStatus (&stat); printf ("The MemoryStatus structure is %ld bytes long.\n", stat.dwLength); printf ("It should be %d.\n", sizeof (stat)); printf ("%ld percent of memory is in use.\n", stat.dwMemoryLoad); printf ("There are %*ld total %sbytes of physical memory.\n", WIDTH, stat.dwTotalPhys/DIV, divisor); printf ("There are %*ld free %sbytes of physical memory.\n", WIDTH, stat.dwAvailPhys/DIV, divisor); printf ("There are %*ld total %sbytes of paging file.\n", WIDTH, stat.dwTotalPageFile/DIV, divisor); printf ("There are %*ld free %sbytes of paging file.\n", WIDTH, stat.dwAvailPageFile/DIV, divisor); printf ("There are %*lx total %sbytes of virtual memory.\n", WIDTH, stat.dwTotalVirtual/DIV, divisor); printf ("There are %*lx free %sbytes of virtual memory.\n", WIDTH, stat.dwAvailVirtual/DIV, divisor); } |