Because everything in Linux is composed of files, you can get any required information from the /proc/meminfo file. Here’s the code:
int getFreePhysicalMemory(){ ifstream meminfo("/proc/meminfo"); if ( ! meminfo.is_open() ) { return -1; } char szTmp[256]; char szMem[256]; string s0("MemFree:"); string s1("kB"); while ( ! meminfo.eof() ) { meminfo.getline( szTmp, 256 ); string s2(szTmp); string::size_type pos0 = s2.find(s0); if( pos0 != string::npos ) { string::size_type pos1 = s2.find(s1); if ( pos1 != string::npos ) { string s3 = s2.substr( pos0 + s0.size(), pos1 - (pos0+s0.size()) ); strncpy(szMem, s3.c_str(), s3.size() ); return (atoi(szMem)*1024*1024) ; } } }}