احصل برنامجياً على مبلغ ذاكرة الوصول العشوائي المثبت على OS X
سؤال
أنا أعمل على جهاز يحتوي على 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
هذا يرجع حجم الذاكرة كمكتسب 64 بت ، بدلاً من عدد صحيح 32 بت الافتراضي.
ال صفحة الرجل يعطي التفاصيل.
نصائح أخرى
الطريق السهل:
[[NSProcessInfo processInfo] physicalMemory]