Описание для GlobalMemoryStatusEx () в MSDN гласит:
Информация, возвращаемая функцией GlobalMemoryStatusEx, является изменчивой.Нет гарантии, что два последовательных вызова этой функции вернут одну и ту же информацию.
Одна часть информации, возвращаемая этой функцией, - «Общая физическая память в байтах».(Это отличается от количества свободной физической памяти, для этого есть еще один элемент структуры MEMORYSTATUSEX.)
Как можно изменять общую физическую память при каждом запуске программы?Я вывел значения в текстовый файл и получил следующие результаты:
55872198592
55837267904
8589934605
55835301824
55848146880
55849064384
55849129920
55836743616
8589934605
8589934605
8589934605
8589934605
55835105216
У меня 4 ГБ системной оперативной памяти.Нужно ли вызывать другую функцию API, если я нахожусь на 64-битной ОС?
Вот код:
#include <Windows.h>
#include <string>
#include <sstream>
#include "Game.h"
#include <fstream>
void Game::CheckMemory(DWORDLONG& a)
{
MEMORYSTATUSEX status;
GlobalMemoryStatusEx(&status);
a = status.ullTotalPhys;
std::stringstream ss;
ss << "Total Physical Memory: " << status.ullTotalPhys << "bytes." << std::endl;
MessageBoxA(NULL, ss.str().c_str(), "Mem Summary", 0);
}
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
DWORDLONG a;
Game g;
g.CheckMemory(a);
std::fstream fs("test.txt", std::fstream::in | std::fstream::out | std::fstream::app);
fs << a << std::endl;
fs.close();
return 0;
}