Добавлена реализация для Windows

This commit is contained in:
re.kovalev 2021-07-16 13:27:54 +03:00
parent 74cdbd9401
commit c1089b4806
2 changed files with 31 additions and 6 deletions

View File

@ -4,7 +4,9 @@
/*Статическое поле класса Memorator*/
#ifdef __linux__
sysinfo Memorator::info;
struct sysinfo Memorator::info;
#elif _WIN32
MEMORYSTATUSEX Memorator::statex;
#endif
/*Заполняет поле с информацией класса Memorator данными от системы*/
@ -12,15 +14,22 @@ void Memorator::ask()
{
#ifdef __linux__
sysinfo(&info);
#elif _WIN32
statex.dwLength = sizeof (statex);
GlobalMemoryStatusEx(&statex);
#endif
}
/*Возвращает общее кол-во памяти в байтах*/
unsigned long Memorator::getTotalRam_B()
{
#ifdef __linux__
ask();
#ifdef __linux__
return info.totalram;
#elif _WIN32
return statex.ullTotalPhys;
#else
return 0;
#endif
}
@ -39,9 +48,13 @@ unsigned long Memorator::getTotalRam_MB()
/*Возвращает общее кол-во свободной памяти в байтах*/
unsigned long Memorator::getFreeRam_B()
{
#ifdef __linux__
ask();
#ifdef __linux__
return info.freeram;
#elif _WIN32
return statex.ullAvailPhys;
#else
return 0;
#endif
}
@ -60,9 +73,13 @@ unsigned long Memorator::getFreeRam_MB()
/*Возвращает общее кол-во памяти подкачки в байтах*/
unsigned long Memorator::getTotalSwap_B()
{
#ifdef __linux__
ask();
#ifdef __linux__
return info.totalswap;
#elif _WIN32
return statex.ullTotalPageFile;
#else
return 0;
#endif
}
@ -84,6 +101,10 @@ unsigned long Memorator::getFreeSwap_B()
#ifdef __linux__
ask();
return info.freeswap;
#elif _WIN32
return statex.ullAvailPageFile - getFreeRam_B();
#else
return 0;
#endif
}

View File

@ -2,6 +2,8 @@
#ifdef __linux__
#include <sys/sysinfo.h>
#elif _WIN32
#include <windows.h>
#endif
/*Класс для работы с информацией об оперативной памяти*/
@ -24,6 +26,8 @@ class Memorator
private:
static void ask();
#ifdef __linux__
static sysinfo info;
static struct sysinfo info;
#elif _WIN32
static MEMORYSTATUSEX statex;
#endif
};