[英]Programmatically get amount of RAM installed on OS X
我正在安裝一台安裝了8 GB內存的機器,我正在嘗試以編程方式確定機器中安裝了多少內存。 我已經嘗試使用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注冊表中找到任何其他地方。 有沒有辦法通過IOKit訪問此信息,或者使sysctlbyname返回多於32位有符號整數的方法?
您可以使用sysctl()
並查詢HW_MEMSIZE
。這會將內存大小返回為64位整數,而不是默認的32位整數。
手冊頁提供了詳細信息。
簡單的方法:
[[NSProcessInfo processInfo] physicalMemory]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.