首页 > 解决方案 > 指向新元素和新数组的指针之间的区别?

问题描述

在 C++ 中,下面代码中的指针 p 和 q 之间有什么区别吗?

int* p = new int;
int* q = new int[5];

我知道一个为单个 int 分配新内存,第二个为 5 个 int 的数组分配内存,但从根本上说,指向单个 int 的指针和指向 int 数组的指针之间有什么区别吗?

我有这个疑问是因为我读到必须使用它delete[] q来释放 q 指向的内存,但仅delete p用于 p 指向的单个 int。如果我使用会发生什么delete q

标签: c++

解决方案


指针本身是完全无法区分的。这就是为什么必须记住匹配new/deletenew[]/ delete[]

不匹配它们会触发未定义的行为。


推荐阅读