我的工作有8场音乐会安装的内存的机器上,我试图以编程方式确定多少内存安装在机器。我已经使用sysctlbyname()来获得的安装的内存量已经尝试,但是它似乎限于返回一个符号的32位整数。

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

在上面的代码,无论传递给sysctlbyname什么类型,总是返回在总变量2147483648。我经历过由于IOKit和IORegistryExplorer寻找确定安装的内存的另一条路线,但都拿出了什么至今。我发现IODeviceTree:在IORegistryExplorer /内存,但没有在现场为有规模。我没有找到任何其他地方的IO注册表要么。有没有一种方法来访问通过这一由于IOKit信息,或一种方法,使sysctlbyname回报超过32位有符号整数?

有帮助吗?

解决方案

可以使用sysctl()和查询HW_MEMSIZE.This返回的存储器大小为64位的整数,而不是默认的32位整数。

手册页给出的细节。

其他提示

在简单的方法:

[[NSProcessInfo processInfo] physicalMemory]
scroll top