2012-11-13 4 views
1

코드가 다음과 같은 경우 어떻게 동적으로 할당 된 모든 데이터가 안전하게 삭제되도록 삭제를 사용할 수 있습니까?동적 2 차원 배열의 안전한 삭제

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; 

역순으로 동일합니다.

1

같은 방법으로 당신이 그것을 할당 :

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

이것은'in i = 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

이것은'in i = 0l'을 컴파일하지 않습니다 –

+0

고마워, 단지 두가지 오타가 ... 'l =;' 't'를 놓 쳤어 [@OlafDietsche] –