【发布时间】:2020-06-13 08:06:25
【问题描述】:
我来自 Java 背景,但仍然对指针和其他东西的工作方式感到困惑。我有两个例子。
int arr[10] = {};
delete[] arr;
在这里,我的编译器会发出关于删除 arr 的警告。
int *arr = new int[4];
delete[] arr;
但它不会在这里发出警告?这是为什么呢?
【问题讨论】:
-
每个
new都有一个对应的delete。没有new-> 没有delete。 -
因为在第二种情况下您正确使用了
delete[]。简单地说,如果你使用new[],那么在某些时候你需要使用delete[]。 BTW 'throw' 在 C++ 中具有特定的含义(与异常有关)。编译器不会抛出警告。
标签: c++ arrays delete-operator