gpt4 book ai didi

c++ - 为什么编译器需要 `delete [] p` 而不是 `delete p[]` ?

转载 作者:IT老高 更新时间:2023-10-28 22:17:55 35 4
gpt4 key购买 nike

在 C++ 中,如果你想动态分配一个数组,你可以这样做:

int *p;
p = new int[i]; // i is some number

但是,要删除数组,您需要...

delete[] p;

为什么不delete p[]?这与最初的创建方式不是更加对称吗?以这种方式设计语言的原因(如果有的话)是什么?

最佳答案

一个原因可能是使这些案例更加不同。

int ** p;
delete[] p
delete p[1];

如果是delete p[],那么一个字符的错误将会产生非常糟糕的后果。

关于c++ - 为什么编译器需要 `delete [] p` 而不是 `delete p[]` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11202251/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com