احصل برنامجياً على مبلغ ذاكرة الوصول العشوائي المثبت على OS X

StackOverflow https://stackoverflow.com/questions/1396691

  •  22-09-2019
  •  | 
  •  

سؤال

أنا أعمل على جهاز يحتوي على 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]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top