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

Для получения информации о количестве свободной памяти надо воспользоваться функцией 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.

Читайте также:
  • Низкоуровневые процедуры обработки звука
    Ниже приведен код, обрабатывающий аудиосигнал, получаемый со входа звуковой карты (SoundBlaster). Надеюсь он поможет разобраться вам с этой сложной темой. Включенный в код модуль RECUNIT делает всю изнурительную работу по извлечению звука со входа звуковой карты.       Var WaveRe...
  • Использование анимированных курсоров
    (mycursor.ani - файл, содержащий анимированный курсор. Вы можете создать его с помощью программы Microsoft aniedit.exe) const crMyCursor = 1;procedure TForm1.FormCreate(Sender: TObject);begin // Загружаем курсор. Единственный способ для этого Screen.Cursors[crMyCursor] :=LoadCursorFromFile('c...
  • Определение и использование курсора
    Сначала (поскольку многие попадаются в эту ловушку) убедитесь в том, что имя .RES-файла, в котором вы храните ваш курсор, отличается от имени .RES-файла вашего проекта, т.е., если ваш проект имеет имя MyApp.DPR, то не используйте для хранения новых ресурсов файл MyApp.RES. Вы должны создать отдел...
  • Как минимизиpовать все запущеные окна
    /* Hачало (MINIMIZE.DPR){$APPTYPE CONSOLE}program Minimize;uses Windows,Messages;var Count:integer;function EnumProc (WinHandle: HWnd; Param: LongInt): Boolean; stdcall;begin if (GetParent (WinHandle) = 0) and (not IsIconic (WinHandle)) and (IsWindowVisible (WinHandle)) then begin PostMessage (...
  • Выключение питания ATX коpпуса из-под DOS
    mov ax,5301h sub bx,bx int 15h jb stop mov ax,530eh sub bx,bx int 15h jb stop mov ax,5307h mov bx,0001h mov cx,0003h int 15h stop: int 20h...