2012-11-13 87 views
1

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

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

对于_every_'new'使用'delete',为每个'new []'使用'delete []'。但是,请参阅'std :: vector >'。 – hmjd

+1

“**确保**所有动态分配的数据被安全删除**”?喜欢这个? https://gist.github.com/3959961 –

回答

2

金科玉律 - 每个new/new[]需要delete/delete[]。所以:

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

new/new[]相同,但是相反。

1

以同样的方式,你分配它:

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

这将不会编译'在我= 0l' –

1

只要做到这一点逆转:

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

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

这不会编译'在i = 0l' –

+0

谢谢,只有两个错别字...'l =;'并错过了't'[@OlafDietsche] –