Вывод количества оперативной памяти на консоль.
Добавлено: 24 апр 2013, 19:11
Хочу вывести сколько оперативной памяти в компьютере. Обращаюсь к функции WinAIP:
У самого стоит 64 разрядная семёрка, максимальная. Естественно оперативной памяти 4гб, знаю что эта функция больше двух не увидит. Но он у меня выводит 3гб, во первых не правильно, во вторых как? В третих 3 гб везде, даже на 32 разрядной...
Код такой:
Я не знаю почему... Пробовал вывести с помощью MEMORYSTATUSEX. Мало того что её пришлось написать вручную, указать программе что вот есть такая штука, а то она не определена. И всё равно выводит не правильно. Помогите, я уже голову сломал.
Код: Выделить всё
VOID GlobalMemoryStatus(
LPMEMORYSTATUS lpBuffer // указатель на структуру MEMORYSTATUS
);
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;
Код такой:
Код: Выделить всё
MEMORYSTATUS memstat;
memstat.dwLength = sizeof(memstat);
cout << "Память: " << memstat.dwTotalPhys/ 1073741824 << " GB";
Я не знаю почему... Пробовал вывести с помощью MEMORYSTATUSEX. Мало того что её пришлось написать вручную, указать программе что вот есть такая штука, а то она не определена. И всё равно выводит не правильно. Помогите, я уже голову сломал.