这个说法怎么样
int* p = new int[10];
p[10] = 5;
delete[] p;
与此声明不同?
int* p = new int[10];
*p = 5;
delete[] p;
我想知道第一个代码有什么问题。我对 C++ 有点陌生,所以任何解释都值得赞赏。谢谢。
答案 0 :(得分:3)
p[10]
的行为未定义,因为数组只有 10 个元素,第一个元素在位置 0。您可以访问 p[0]
(与*p
) 到 p[9]
包括在内。
换句话说,C++ 中的数组从零开始。参见例如 Fortran,它们基于一个。