質問

私がインストールされているメモリの8回のギグを持っているマシン上で働いていると私はプログラム的にマシンにインストールされてどのくらいのメモリを決定しようとしています。私はすでにしかし、符号付き32ビット整数を返すに限定しているようで、インストールされているメモリの量を取得するためにsysctlbyname()を使用しようとしました。

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のを経由して、この情報、または32ビット符号付き整数よりも多くのsysctlbynameリターンを作るための方法は、アクセスにありますか?

役に立ちましたか?

解決

sysctl()とクエリHW_MEMSIZE.Thisを使用することができる代わりに、デフォルトの32ビット整数、64ビット整数としてメモリサイズを返します。

manページ詳細を示します。

他のヒント

簡単な方法:

[[NSProcessInfo processInfo] physicalMemory]
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top