123 lines
3.0 KiB
C++
123 lines
3.0 KiB
C++
/*Ковалев Р.Е. 2021. rekovalev.site*/
|
||
|
||
#include "Memorator.h"
|
||
|
||
/*Статическое поле класса Memorator*/
|
||
#ifdef __linux__
|
||
struct sysinfo Memorator::info;
|
||
#elif _WIN32
|
||
MEMORYSTATUSEX Memorator::statex;
|
||
#endif
|
||
|
||
/*Заполняет поле с информацией класса Memorator данными от системы*/
|
||
void Memorator::ask()
|
||
{
|
||
#ifdef __linux__
|
||
sysinfo(&info);
|
||
#elif _WIN32
|
||
statex.dwLength = sizeof (statex);
|
||
GlobalMemoryStatusEx(&statex);
|
||
#endif
|
||
}
|
||
|
||
/*Возвращает общее кол-во памяти в байтах*/
|
||
unsigned long long Memorator::getTotalRam_B()
|
||
{
|
||
ask();
|
||
#ifdef __linux__
|
||
return info.totalram;
|
||
#elif _WIN32
|
||
return statex.ullTotalPhys;
|
||
#else
|
||
return 0;
|
||
#endif
|
||
}
|
||
|
||
/*Возвращает общее кол-во памяти в килобайтах*/
|
||
unsigned long long Memorator::getTotalRam_KB()
|
||
{
|
||
return getTotalRam_B()/1000;
|
||
}
|
||
|
||
/*Возвращает общее кол-во памяти в мегабайтах*/
|
||
unsigned long long Memorator::getTotalRam_MB()
|
||
{
|
||
return getTotalRam_KB()/1000;
|
||
}
|
||
|
||
/*Возвращает общее кол-во свободной памяти в байтах*/
|
||
unsigned long long Memorator::getFreeRam_B()
|
||
{
|
||
ask();
|
||
#ifdef __linux__
|
||
return info.freeram;
|
||
#elif _WIN32
|
||
return statex.ullAvailPhys;
|
||
#else
|
||
return 0;
|
||
#endif
|
||
}
|
||
|
||
/*Возвращает общее кол-во свободной памяти в килобайтах*/
|
||
unsigned long long Memorator::getFreeRam_KB()
|
||
{
|
||
return getFreeRam_B()/1000;
|
||
}
|
||
|
||
/*Возвращает общее кол-во свободной памяти в мегабайтах*/
|
||
unsigned long long Memorator::getFreeRam_MB()
|
||
{
|
||
return getFreeRam_KB()/1000;
|
||
}
|
||
|
||
/*Возвращает общее кол-во памяти подкачки в байтах*/
|
||
unsigned long long Memorator::getTotalSwap_B()
|
||
{
|
||
ask();
|
||
#ifdef __linux__
|
||
return info.totalswap;
|
||
#elif _WIN32
|
||
return statex.ullTotalPageFile;
|
||
#else
|
||
return 0;
|
||
#endif
|
||
}
|
||
|
||
/*Возвращает общее кол-во памяти подкачки в килобайтах*/
|
||
unsigned long long Memorator::getTotalSwap_KB()
|
||
{
|
||
return getTotalSwap_B()/1000;
|
||
}
|
||
|
||
/*Возвращает общее кол-во памяти подкачки в мегабайтах*/
|
||
unsigned long long Memorator::getTotalSwap_MB()
|
||
{
|
||
return getTotalSwap_KB()/1000;
|
||
}
|
||
|
||
/*Возвращает общее кол-во свободной памяти подкачки в байтах*/
|
||
unsigned long long Memorator::getFreeSwap_B()
|
||
{
|
||
#ifdef __linux__
|
||
ask();
|
||
return info.freeswap;
|
||
#elif _WIN32
|
||
return statex.ullAvailPageFile - getFreeRam_B();
|
||
#else
|
||
return 0;
|
||
#endif
|
||
}
|
||
|
||
/*Возвращает общее кол-во свободной памяти подкачки в килобайтах*/
|
||
unsigned long long Memorator::getFreeSwap_KB()
|
||
{
|
||
return getFreeSwap_B()/1000;
|
||
}
|
||
|
||
/*Возвращает общее кол-во свободной памяти подкачки в мегабайтах*/
|
||
unsigned long long Memorator::getFreeSwap_MB()
|
||
{
|
||
return getFreeSwap_KB()/1000;
|
||
}
|
||
|