iOS int names[] = CTL_HW, HW_PHYSMEM 返回 HW_PHYSMEM 值为负

Posted

技术标签:

【中文标题】iOS int names[] = CTL_HW, HW_PHYSMEM 返回 HW_PHYSMEM 值为负【英文标题】: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;

【问题讨论】:

【参考方案1】:

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

尝试使用使用 uint64_t 值的 HW_MEMSIZE。

【讨论】:

以上是关于iOS int names[] = CTL_HW, HW_PHYSMEM 返回 HW_PHYSMEM 值为负的主要内容,如果未能解决你的问题,请参考以下文章

iOS获取设备型号

多维数组的使用

Pandas操作excel

Error in match.names(clabs, names(xi)) : names do not match previous names

java foreach是不是能对jsonarray进行遍历

如何使用一行代码在 C# 中连接两个数组