|
1
18
那件事
声明的类型 有效类型 用于存储的数据访问(C17 6.5§6).
因此,就C标准而言,它对于
|
|
2
20
正如“在选定的系统上,
大小\u t
分配
每个元素都可以访问。
“数组的空间”
当然是
不寻常的
|
|
|
3
2
|
|
|
4
2
如果程序超出了实现限制,则行为是未定义的。这源于实现限制的定义
该标准也没有定义可能存在的实现限制,因此这有点
全权委托
,但我认为最大对象大小实际上与对象分配相关是合理的(最大对象大小通常为
比
这使我们得出以下结论:呼吁
一些实现实际上会返回一个指针,对于类似
对于堆栈上的可变长度数组,关于超出实现限制导致未定义行为的规则更为明显:
|
|
5
2
根据标准的文本,可能是因为标准(有些人会故意说)对这类事情含糊不清。
根据7.19.2:
如果实现允许任何类型(包括数组类型),而这些类型的大小不能用
充其量是允许创建任何大于
|
|
|
6
2
只是一个补充:通过一点点的数学运算,你可以显示SIZE\u MAX*SIZE\u MAX=1(当根据C规则计算时)。 但是,calloc(SIZE\u MAX,SIZE\u MAX)只允许执行以下两项操作之一:返回指向SIZE\u MAX字节的SIZE\u MAX元素数组的指针,或者返回NULL。不允许仅通过将参数相乘,得到结果1,然后分配一个字节(清除为0)来计算总大小。 |
|
|
7
0
该标准并不要求实现提供任何方法来创建指向此类大型对象的指针。但它确实定义了一个函数,
然而,有效地分配任何类型对象的能力是实现的质量问题。该标准不会要求任何特定的分配请求成功,也不会禁止实现返回可能无法使用的指针(在某些Linux环境中,malloc()可能会产生指向地址空间的过度提交区域的指针;物理存储不足时尝试使用指针可能会导致致命的陷阱)。当然,不反复无常地实施这项计划会更好
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |