Как узнать количество доступной памяти

Для получения информации о количестве свободной памяти надо воспользоваться функцией GlobalMemoryStatus(Ex). Вот пример из MSDN:

#include <windows.h>
#include <stdio.h>
// чтобы получить результат в Kb, используем делитель.
#define DIV 1024
// #define DIV 1
char *divisor = "K";
// char *divisor = "";
// Ширина поля, в которой будут печаться цифры
// "%*ld" преобразует аргумент списка в int, и выравнивает вправо.
#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);
}

В итоге, в консольном окне получим:

The MemoryStatus structure is 32 bytes long.
It should be 32.
78 percent of memory is in use.
There are 65076 total Kbytes of physical memory.
There are 13756 free Kbytes of physical memory.
There are 150960 total Kbytes of paging file.
There are 87816 free Kbytes of paging file.
There are 1fff80 total Kbytes of virtual memory.
There are 1fe770 free Kbytes of virtual memory.

Читайте также:
  • Как узнать количество элементов и размер корзины
    //Получает размер и количество элементов в корзинеSHSTDAPI SHQueryRecycleBin( LPCTSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo);   ...
  • Как очистить корзину
    //Очищает корзину на указанном дискеSHSTDAPI SHEmptyRecycleBin( HWND hwnd, LPCTSTR pszRootPath, DWORD dwFlags);   ...
  • Как использовать SendMessage() вместо SendDlgItemMessage()
    Как SendMessage() так и SendDlgItemMessage() можно использовать для добавление строк в окно списка. SendMessage() используется для отправки сообщения указанному окну используя дескриптор окна списка. SendDlgItemMessage() используется для отправки сообщения дочернему окну данного окна используя и...
  • Как скрыть/показать панель задач
    Следующая функция позволяет не только скрыть/показать панель задач, но и установить рабочую область десктопа (при помощи SystemParametersInfo), чтобы при скрытии панель задач внизу не оставалось пустого места:void gShowHideTaskBar(BOOL bHide /*=FALSE*/){ CRect rectWorkArea = CRect(0,0,0,0); CRect ...
  • Как программно нажать кнопку Пуск
    А вот так: #include void main(void){ HWND hTaskBar, hButton; HDC hDCScreen = GetDC(NULL); DWORD ScreenHeight=GetDeviceCaps(hDCScreen,VERTRES); ReleaseDC(NULL, hDCScreen); hTaskBar= FindWindow("Shell_TrayWnd",NULL); hButton= GetWindow(hTaskBar, GW_CHILD); ...