![]() |
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”,如果他试图访问超过他计算出的大小,那么,好吧。我在重复我自己;) |
![]() |
AstralHex · 矩阵乘法代码工作不正常 5 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 5 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 5 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 5 月前 |