以编程方式获取安装在OS X上的RAM数量

5

我正在处理一台安装了8GB内存的机器,试图编程确定机器上安装了多少内存。我已经尝试使用sysctlbyname()来获取安装的内存量,但它似乎仅限于返回一个带符号的32位整数。

uint64_t total = 0;
size_t size = sizeof(total);
if( !sysctlbyname("hw.physmem", &total, &size, NULL, 0) )
     m_totalMemory = total;

无论传递给sysctlbyname的类型是什么,上述代码始终在total变量中返回2147483648。我已经在IOKit和IORegistryExplorer中寻找另一种确定安装内存的方法,但目前为止没有发现任何东西。我在IORegistryExplorer中找到了IODeviceTree:/memory,但那里没有大小字段。我也没有在IO Registry的其他地方找到任何信息。有没有通过IOKit访问此信息的方法,或者让sysctlbyname返回超过32位有符号整数的方法?
2个回答

8
你可以使用sysctl()并查询HW_MEMSIZE。这将返回一个64位整数的内存大小,而不是默认的32位整数。 手册页面提供了详细信息。

我刚在 man 手册中发现了这个,当时也看到了你的评论。谢谢! - Grant Limberg

7

简单的方法:

[[NSProcessInfo processInfo] physicalMemory]

很遗憾,我们使用的是C++而不是Objective-C。 - Grant Limberg
5
它们不是互相排斥的。 - Chuck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接