【问题标题】:iOS int names[] = {CTL_HW, HW_PHYSMEM} the return HW_PHYSMEM value is negativeiOS int names[] = {CTL_HW, HW_PHYSMEM} 返回 HW_PHYSMEM 值为负
【发布时间】:2019-08-23 10:01:33
【问题描述】:

我的代码如下,它在旧设备上运行良好,例如:iPhone 6、iPhone7,但它不适用于 iPhone XS Max,它返回 -378535936我的 iPhone XS Max。有谁知道原因吗?

任何建议都会有所帮助,谢谢。

+ (NSUInteger)getHWPHYSMEMValue {
    size_t size = sizeof(int);
    int results;
    int mib[2] = {CTL_HW, HW_PHYSMEM};
    sysctl(mib, 2, &results, &size, NULL, 0);
    return (NSUInteger) results;
}

【问题讨论】:

    标签: ios objective-c iphone


    【解决方案1】:

    您正在尝试以 32 位有符号整数获取内存大小。如果内存超过 2 GB,您将得到一个负值(如果超过 4 GB,它将被截断并或多或少随机)。

    尝试使用使用 uint64_t 值的 HW_MEMSIZE。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-02
      • 2018-05-07
      • 2018-01-29
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多