![]() |
1
4
3.7.3.1/2: 〔32〕。其目的是通过调用malloc()或calloc()实现operator new(),因此规则基本相同。C++与C不同,要求返回一个非空指针的零请求。
将动态分配的数组与
|
![]() |
2
6
你为什么要失败?如果程序员试图读/写不存在的元素,那么这是一个错误。初始分配不是(这与例如
|
![]() |
3
5
很久以前,在使用异常之前,如果分配失败,malloc函数返回一个空指针。 如果分配零字节也会返回空指针,那么很难区分失败的分配和随后的零字节分配。 另一方面,如果零字节的分配将返回一个非空指针,则最终会出现两个不同的零字节分配可以具有相同的指针的情况。 因此,为了简单起见,零字节的malloc函数分配1字节。 |
![]() |
4
3
对于int[n]也可以这样说,其中n>0:
|
![]() |
5
2
在ISO C++标准下覆盖零大小的数组分配 5.3.4, paragrahp 7
这使得执行dnaymic数组分配的代码更加容易。 一般来说:如果有人调用一个函数并要求它返回一个包含n(在您的例子中是0)个元素的数组,那么代码就不应该试图读取返回的数组中的n-nth元素。 所以,我并没有真正看到灾难性的失败,因为对于任何n来说,代码都是错误的。 如你所说:
计算出的大小将是“0”,如果他试图访问超过他计算出的大小,那么,好吧。我在重复我自己;) |
![]() |
TheKing · 为什么数组的地址可以有负值? 3 年前 |
![]() |
yurnero · MATLAB:“加载”一个快速访问功能 7 年前 |
![]() |
joe · 一页可以同时在两个工作集中吗? 7 年前 |
![]() |
Jaques · “.exe”已触发断点 7 年前 |
![]() |
adn bps · 在函数中修改变量的高效内存方法 7 年前 |
![]() |
Gauraang Khurana · C语言中分段错误的不稳定行为 7 年前 |
![]() |
Rajesh K · 如何查找设备中存在的广告垃圾? 7 年前 |