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 值为负的主要内容,如果未能解决你的问题,请参考以下文章
Error in match.names(clabs, names(xi)) : names do not match previous names