安全删除动态2d数组

时间:2012-11-13 11:09:49

标签: c++ pointers

如果我的代码如下,我如何使用delete来确保所有动态分配的数据被安全删除?

float** test;
test = new float*[3];
for(int i=0;i<3;i++)
    test[i] = new float[2];

4 个答案:

答案 0 :(得分:2)

黄金法则 - 针对您需要的每个new/new[] delete/delete[]。所以:

for(int i=0;i<3;i++)
    delete[] test[i];
delete[] test;

new/new[]相同,但顺序相反。

答案 1 :(得分:1)

与分配它的方式相同:

for( in i = 0l i < 3; i++ )
    delete[] test[i];
delete[] test;

答案 2 :(得分:1)

反过来说:

for(int i=0;i<3;i++)
    delete[] test[i];

delete[] test;

答案 3 :(得分:1)

for( int i = (0); i < 3; ++i )
{
    delete[] test[i];
}
delete[] test;