我一般都知道你new是一个对象的实例还是一个主数据类型,你使用delete; 如果你分配一个数组new int[10],你可以释放内存delete[].我刚刚遇到另一个来源并发现在C++ 11中,您可以像这样创建一个多维数组:
auto arr = new int[10][10];
Run Code Online (Sandbox Code Playgroud)
我的问题是:我应该使用delete还是应该使用delete[]?我会说delete[]看起来对我更正确,但是,delete不会崩溃以下程序:
#include <stdio.h>
int main() {
for (int i = 0; i < 100000; i++) {
cout << i << endl;
auto ptr = new int[300][300][300];
ptr[299][299][299] = i;
delete ptr; // both delete and delete[] work fine here
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是为什么?
始终delete[]在分配的对象是一个数组(包括一个数组数组,即一个多维数组).使用delete时应该使用delete[],反之亦然,是未定义的行为.它可能似乎有效,但不能保证.
| 归档时间: |
|
| 查看次数: |
435 次 |
| 最近记录: |