1、各平台调用接口

2、接口实现#if defined(_WIN32)

#include

#elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__))

#include

#include

#include

#if defined(BSD)

#include

#endif

#else

#error "Unable to define getMemorySize( ) for an unknown OS."

#endif

size_t getMemorySize( )

{

#if defined(_WIN32) && (defined(__CYGWIN__) || defined(__CYGWIN32__))

/* Cygwin under Windows. ------------------------------------ */

/* New 64-bit MEMORYSTATUSEX isn't available. Use old 32.bit */

MEMORYSTATUS status;

status.dwLength = sizeof(status);

GlobalMemoryStatus( &status );

return (size_t)status.dwTotalPhys;

#elif defined(_WIN32)

/* Windows. ------------------------------------------------- */

/* Use new 64-bit MEMORYSTATUSEX, not old 32-bit MEMORYSTATUS */

MEMORYSTATUSEX status;

status.dwLength = sizeof(status);

GlobalMemoryStatusEx( &status );

return (size_t)status.ullTotalPhys;

#elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__))

/* UNIX variants. ------------------------------------------- */

/* Prefer sysctl() over sysconf() except sysctl() HW_REALMEM and HW_PHYSMEM */

#if defined(CTL_HW) && (defined(HW_MEMSIZE) || defined(HW_PHYSMEM64))

int mib[2];

mib[0] = CTL_HW;

#if defined(HW_MEMSIZE)

mib[1] = HW_MEMSIZE; /* OSX. --------------------- */

#elif defined(HW_PHYSMEM64)

mib[1] = HW_PHYSMEM64; /* NetBSD, OpenBSD. --------- */

#endif

int64_t size = 0; /* 64-bit */

size_t len = sizeof( size );

if ( sysctl( mib, 2, &size, &len, NULL, 0 ) == 0 )

return (size_t)size;

return 0L; /* Failed? */

#elif defined(_SC_AIX_REALMEM)

/* AIX. ----------------------------------------------------- */

return (size_t)sysconf( _SC_AIX_REALMEM ) * (size_t)1024L;

#elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGESIZE)

/* FreeBSD, Linux, OpenBSD, and Solaris. -------------------- */

return (size_t)sysconf( _SC_PHYS_PAGES ) *

(size_t)sysconf( _SC_PAGESIZE );

#elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGE_SIZE)

/* Legacy. -------------------------------------------------- */

return (size_t)sysconf( _SC_PHYS_PAGES ) *

(size_t)sysconf( _SC_PAGE_SIZE );

#elif defined(CTL_HW) && (defined(HW_PHYSMEM) || defined(HW_REALMEM))

/* DragonFly BSD, FreeBSD, NetBSD, OpenBSD, and OSX. -------- */

int mib[2];

mib[0] = CTL_HW;

#if defined(HW_REALMEM)

mib[1] = HW_REALMEM; /* FreeBSD. ----------------- */

#elif defined(HW_PYSMEM)

mib[1] = HW_PHYSMEM; /* Others. ------------------ */

#endif

unsigned int size = 0; /* 32-bit */

size_t len = sizeof( size );

if ( sysctl( mib, 2, &size, &len, NULL, 0 ) == 0 )

return (size_t)size;

return 0L; /* Failed? */

#endif /* sysctl and sysconf variants */

#else

return 0L; /* Unknown OS. */

#endif

}

使用

size_t memorySize = getMemorySize( );

c语言 查看系统内存,C/C++获取系统物理内存大小相关推荐

  1. 获取系统时间出错oracle-,oracle 获取系统时间(转)

    Oracle中如何获取系统当前时间 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; ORACLE里获取一个时间的年.季.月.周.日 ...

  2. 仿抖音短视频系统源码,获取系统图片

    仿抖音短视频系统源码,实现获取系统图片的相关代码如下: 首先开权限 <uses-permission android:name="android.permission.WRITE_EX ...

  3. windows系统下SNMP协议获取系统内存、CPU实例代码

    系统环境:win10 注:win10及以下windows平台,在控制面板,程序中,添加snmp服务功能. 可参照:https://jingyan.baidu.com/article/3d69c5515 ...

  4. 如何获取系统时间java_java如何获取系统当前时间,java获取当前时间date类型

    java如何获取系统当前时间爪哇如何获取系统当前时间,爪哇岛获取系统当前时间的方法:获得当前时间和当前时间前30秒时间,代码为[简单日期格式df=新的简单日期格式(' yyyy-MM-DD hh :M ...

  5. javascript获取系统时间时区_javascript获取系统当前时间的方法

    本文实例讲述了javascript获取系统当前时间的代码.分享给大家供大家参考.具体如下: 运行效果截图如下: 具体代码如下: 获取时间 window.onload = function(){ sho ...

  6. html自动获取系统时间,js+html获取系统当前时间

    本文实例为大家分享了html获取系统当前时间的具体代码,供大家参考,具体内容如下 td { font-size: 12px; color: #ffffff; font-family: verdana, ...

  7. stm32 Keil编译后查看代码/内存占用空间,Flash/RAM占用大小,Code-Data,RO-Data,RW-Data,ZI-Data是什么含义

    1. 查看码Flash/内存RAM占用大小 工程编译后,双击上图中红框位置,会打开 .map文件,包含了各个函数和文件占用的空间大小和地址. 2. Code-Data,RO-Data,RW-Data, ...

  8. php如何获得系统时间,php如何获取系统时间

    PHP获取当前系统时间方法总结 一.获取当前时间戳 方法1:通过time函数 time(); 方法2:通过$_SERVER中的REQUEST_TIME元素 $_SERVER['REQUEST_TIME ...

  9. java获得系统换行符_java获取系统换行符

    检验检疫信息系统 Java 1 范围 本标准规定了检验检疫信息系统采用Java语言编码需遵循的基本内容.基本内容包括文件.文件组 织.排版.注释.声明.命名规范.本标准...... <使用 Ja ...

最新文章

  1. SOA标准发展混乱 国内业务缺少经验
  2. python 多继承与super使用详解_继承中的MRO与super详解
  3. 20145227《信息安全系统设计基础》第一周学习总结
  4. string转换成enum
  5. 2017.12.19
  6. Bailian3717 移动路线【组合】
  7. Python中的变量、引用、拷贝和作用域
  8. POJ--3268 Silver Cow Party(最短路)
  9. 静默安装apk,静默卸载apk
  10. Atitit eclipse新特性总结3.1---4.4  4.5
  11. as ssd测试软件得分分析,SSD性能评判:教你读懂利用AS SSD BenchMark测试SSD固态硬盘性能的参数-网络教程与技术 -亦是美网络...
  12. 软件“生命”系统进化论——软件以负熵为生
  13. K8S中的pod、services、容器的概念和区别
  14. mysql biginteger java_java.math.BigInteger cannot be cast to java.lang.Integer以及mysql升级的问题...
  15. 基于人工智能的滚动轴承PHM方法综述
  16. migo初始化库存 s4_【S4 MM】S4中继续使用MB系统事务代码
  17. fpga时序逻辑(三段式状态机模板、rom实现、边沿检测)
  18. Java基础:Ubuntu20.04下JDK1.8安装+配置
  19. 中国垃圾分类产业链现状动态及未来发展前景预测报告(2022-2027年)
  20. GraphPad绘图软件:汇集生物统计、化学统计、以及科技绘图于一身

热门文章

  1. 计算/感知/认知智能的研究现状
  2. 一台服务器,启动多个redis
  3. 移动端项目总结 - DCloud-HBuilder打包
  4. 漏洞通告 | Atlassian Confluence存在远程代码执行漏洞,悬镜云鲨RASP天然免疫防护...
  5. 文件服务器文件夹,共享文件夹及权限迁移
  6. 作业辅导视频 SS2023-HW13:最小相位系统
  7. 数据结构之树之不同种类篇
  8. Windows命令查看文件的MD5/SHA1/SHA256
  9. Git 2.38发布,引入巨型仓库管理工具Scalar
  10. 数字集成电路设计-1-用一个mux和一个inv实现异或