/*Ковалев Р.Е. 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; }