코드가 다음과 같은 경우 어떻게 동적으로 할당 된 모든 데이터가 안전하게 삭제되도록 삭제를 사용할 수 있습니까?동적 2 차원 배열의 안전한 삭제
float** test;
test = new float*[3];
for(int i=0;i<3;i++)
test[i] = new float[2];
코드가 다음과 같은 경우 어떻게 동적으로 할당 된 모든 데이터가 안전하게 삭제되도록 삭제를 사용할 수 있습니까?동적 2 차원 배열의 안전한 삭제
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;
역순으로 동일합니다.
같은 방법으로 당신이 그것을 할당 :
for(in i = 0l i < 3; i++)
delete[] test[i];
delete[] test;
이것은'in i = 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;
이것은'in i = 0l'을 컴파일하지 않습니다 –
고마워, 단지 두가지 오타가 ... 'l =;' 't'를 놓 쳤어 [@OlafDietsche] –
_every_'new'는'delete'를 사용합니다, 모든'new []'는'delete []'를 사용합니다. 그러나'std :: vector>'을 참조하십시오. –
hmjd
"** ** 동적으로 할당 된 모든 데이터가 ** 안전하게 **"** 안전하게 삭제되었는지 확인하십시오. 이렇게? https://gist.github.com/3959961 –