Взгляните на этот рабочий класс.
Я создал этот класс для своего проекта в Qt, потому что Qt не имеет своих собственных методов для получения информации о памяти, таких как: текущая память процесса, свободная память илиTotal Memory.
Класс адаптирован для Qt, но может быть легко адаптирован для чистого C или других API. Его необходимо связать с "psapi.lib" или -lpsapi
Проблема в том, что мне нужноЧтобы завершить этот класс кодом Linux и Mac, я думаю, что есть много опытных программистов, которые могут заполнить его корректно и работающим кодом ...
заголовочный файл * .h
#ifndef __CLASS__MEMORYINFO__
#define __CLASS__MEMORYINFO__
#include <QtCore>
#ifdef WIN32
#include <Windows.h>
#endif
class class_MemoryInfo
{
public:
class_MemoryInfo( void );
qlonglong GetFreeMemory( void );
qlonglong GetTotalMemory( void );
qlonglong GetCurrentProcesMemory( void );
};
#endif
и * .cpp файл
#include "class_MemoryInfo.h"
#ifdef WIN32
#include <Psapi.h>
#endif
class_MemoryInfo::class_MemoryInfo()
{
}
qlonglong class_MemoryInfo::GetFreeMemory( void )
{
qlonglong _value = 0;
#ifdef WIN32
MEMORYSTATUSEX MemoryStatus;
ZeroMemory( &MemoryStatus, sizeof( MEMORYSTATUSEX ) );
MemoryStatus.dwLength = sizeof( MEMORYSTATUSEX );
if ( GlobalMemoryStatusEx( &MemoryStatus) )
{
_value = MemoryStatus.ullAvailPhys;
}
else
_value = 0;
#endif
return _value;
}
qlonglong class_MemoryInfo::GetTotalMemory( void )
{
qlonglong _value = 0;
#ifdef WIN32
MEMORYSTATUSEX MemoryStatus;
ZeroMemory( &MemoryStatus, sizeof(MEMORYSTATUSEX ));
MemoryStatus.dwLength = sizeof( MEMORYSTATUSEX );
if ( GlobalMemoryStatusEx( &MemoryStatus) )
{
_value = MemoryStatus.ullTotalPhys;
}
else
_value = 0;
#endif
return _value;
}
qlonglong class_MemoryInfo::GetCurrentProcesMemory( void )
{
qlonglong _value = 0;
#ifdef WIN32
PROCESS_MEMORY_COUNTERS pmc;
if ( GetProcessMemoryInfo( GetCurrentProcess(), &pmc, sizeof(pmc)) )
_value = pmc.WorkingSetSize;
else
_value = 0;
#endif
return _value;
}