- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在C中,char
数组的索引范围可以从 0
至 2 ^ (sizeof(size_t) * CHAR_BITS)
,但数组成员的计数是该数字加 1,size_t
不能容纳它多变的。
例如,在x86中,如果sizeof(size_t)
是4
, 那么索引可以从 0
开始至 0xFFFFFFFF
, 但如果数组已满,则成员数为 0xFFFFFFFF + 1
. sizeof(size_t)
不能持有.
1) 这是正确的吗?
2) 我正在考虑将最高索引限制为 0xFFFFFFFE
,有没有更好的解决办法?
我知道这个例子很极端,但我想用它作为引用。
最佳答案
对象
对象 的最大大小约为SIZE_MAX
。 sizeof object
返回任何对象 的大小。返回的类型是 size_t
类型。 size_t
的范围是[0...SIZE_MAX]
。
由于对象之后的地址需要可计算,因此大小限制减一有效。
因为数组是一个对象,最大的4字节int
数组应该是
int big_int_array[SIZE_MAX/sizeof(int)]; // Perhaps 1 less
分配
通过malloc()
分配的最大内存约为SIZE_MAX
。
char *big_array = malloc(SIZE_MAX - 1);
通过calloc()
分配的最大内存约为SIZE_MAX * SIZE_MAX
字节,但如此大的分配尝试通常返回NULL
.
double *big_array = calloc(SIZE_MAX/2, sizeof *big_array);
罕见的机器允许这样做,而不是 Linux。如果产品达到/超过 SIZE_MAX
,大多数平台将返回 NULL
。
这里,big_array[]
可以被索引[0...SIZE_MAX/2)
。这通常要求地址方案不是许多平台采用的传统通用线性模型。
关于c - 数组的最大索引及其在平台上的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46008164/
我正在尝试编写一个程序来列出网络上所有设备的 IP 地址。其主要组成部分之一是能够 ping 设备。这个程序必须在 Linux、Windows 和 Mac 上运行,所以我选择了 Boost 库。 我设
如果我使用 Google 的 Jquery 加载脚本链接,那么如果用户的缓存中已经有该文件,那么当页面加载时,用户计算机是否仍会以任何方式与 Google 联系? 例子: 最佳答案 根据浏览器的缓存
我想在我的 ruby 代码中 ping 一个站点,发现 net-ping 是一个很好的库来执行此操作。不幸的是,当我尝试 gem install net-ping 时出现以下错误: C:>gem
我有一个表(test_matches),其中记录了几场比赛的结果,按日期排序。 GHFT = 目标主队全职。GAFT = 全职客场进球队。 CREATE TABLE `test_matches` (
我正在使用 phing对于一个项目的一些自动构建过程,我想知道:我怎样才能通过电子邮件获得完整的日志? 当我通过命令行启动 phing 时,会显示构建日志;我想要它: 通过电子邮件发送, 给几个收件人
尝试根据 GF 和 GA 创建一个新列“Results”。想知道如何通过定义函数和条件语句来做到这一点。以下是我对一行的初步尝试,但无法弄清楚如何将其应用于所有行,非常感谢您的帮助! 日期地点对手GF
我是一名优秀的程序员,十分优秀!