读书人

new创建的二维数组, 用delete还是dele

发布时间: 2012-04-05 12:42:40 作者: rapoo

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;} 

读书人网 >C++

热点推荐