GlobalMemoryStatusExの説明は、()言う:GlobalMemoryStatusEx関数によって返さGlobalMemoryStatusEx()(Win32の)
情報が揮発性です。この関数への2つの連続した呼び出しが同じ情報を返すという保証はありません。
この関数から返される情報の1つは、「合計物理メモリ(バイト単位)」です。 (これは、使用可能な物理メモリの量とは異なります。
プログラムを実行するたびに、物理メモリの総量はどのように変更できますか?値をテキストファイルに出力し、結果を得ました:
55872198592
55837267904
8589934605
55835301824
55848146880
55849064384
55849129920
55836743616
8589934605
8589934605
8589934605
8589934605
55835105216
私は4GBのシステムRAMを持っています。私が64ビットOSを使用している場合、別のAPI関数を呼び出す必要がありますか?ここで
はコードです:
#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;
}
使用しているコードの短いスニペットを投稿してください。これは奇妙に聞こえます。 – Mat
コードを組み込むように編集しました。私は値を.txtファイルに出力し、メッセージボックスを介して出力しています。 – zooker
ハードウェアの故障とホットスワップは、もっともらしい理由として考えています。 –