new创建的二维数组, 用delete还是delete[] ?
int (*p)[10] = new int[2][10];
销毁这块空间时, delete还是delete[] ?
[解决办法]
delete[] 两个指向int[10]的指针
[解决办法]
- C/C++ code
#include <iostream>using namespace std;class Array{public: Array() { cout<<"默认构造函数"<<endl; } ~Array() { cout<<"析造函数"<<endl; }};int main(){ //动态分配一维数组,delete加上[](放在指针前面,放后面是错误), //当数组元素类型是自定义类型时候尤为重要,因为它决定要析构多少个对象 Array *q = new Array[10]; delete []q; //delete p;//错误 //动态分配二维数组示意图 // _ _ _ _ _ _ _ _ // p->[0]->|_|_|_|_|_|_|_| // |_| _ _ _ _ _ _ _ // [1]->|_|_|_|_|_|_|_| // |_| _ _ _ _ _ _ _ // [2]->|_|_|_|_|_|_|_| // |_| _ _ _ _ _ _ _ // [3]->|_|_|_|_|_|_|_| // |_| _ _ _ _ _ _ _ // [4]->|_|_|_|_|_|_|_| // |_| _ _ _ _ _ _ _ // [5]->|_|_|_|_|_|_|_| Array **p = new Array*[2]; for(int i=0; i<3; i++) p[i] = new Array[7]; for(i=0; i<7; i++) delete []p[i];//删除右边的小格格 delete[]p;//删除的竖立格格 return 0;}