【发布时间】:2020-12-21 16:51:26
【问题描述】:
这个说法如何
int* p = new int[10];
p[10] = 5;
delete[] p;
这个说法不一样?
int* p = new int[10];
*p = 5;
delete[] p;
我想知道第一个代码有什么问题。我对 C++ 有点陌生,所以任何解释都值得赞赏。谢谢。
【问题讨论】:
-
是什么让您认为该声明有问题? (你是对的,有问题,但是在不理解问题的情况下知道你为什么这么认为将有助于我们知道向你解释什么)
-
在大小为
[10]的数组中,有效索引为[0]到[9],因此[10]超出范围 -
@rzq 供将来参考,此类问题会很快被否决并关闭,因此您可能需要先阅读How to Ask,然后再提出其他问题。
-
由于
p[0]和*p的等价性,才真正值得回答。 (好吧,反正我是这么想的。) -
如果它们的不同之处不是很明显,您需要回到基础,花更多时间阅读一本好的 C++ 书籍或教程。成为新人很好,但在询问 SO 之前不做自己的最少研究会导致糟糕的、离题的问题。
标签: c++