如果我的代码如下,我该如何使用delete来确保安全删除所有动态分配的数据?安全删除动态二维数组
float** test;
test = new float*[3];
for(int i=0;i<3;i++)
test[i] = new float[2];
如果我的代码如下,我该如何使用delete来确保安全删除所有动态分配的数据?安全删除动态二维数组
float** test;
test = new float*[3];
for(int i=0;i<3;i++)
test[i] = new float[2];
金科玉律 - 每个new/new[]
需要delete/delete[]
。所以:
for(int i=0;i<3;i++)
delete[] test[i];
delete[] test;
与new/new[]
相同,但是相反。
以同样的方式,你分配它:
for(in i = 0l i < 3; i++)
delete[] test[i];
delete[] test;
这将不会编译'在我= 0l' –
只要做到这一点逆转:
for(int i=0;i<3;i++)
delete[] test[i];
delete[] test;
for(int i = (0); i < 3; ++i)
{
delete[] test[i];
}
delete[] test;
这不会编译'在i = 0l' –
谢谢,只有两个错别字...'l =;'并错过了't'[@OlafDietsche] –
对于_every_'new'使用'delete',为每个'new []'使用'delete []'。但是,请参阅'std :: vector>'。 –
hmjd
“**确保**所有动态分配的数据被安全删除**”?喜欢这个? https://gist.github.com/3959961 –