1
내 질문은 this 대답에서 발생합니다. 주석에서 그는 할당 된 동적 2D 배열을 역순으로 삭제해야한다고 언급했습니다. 그러나이 작업을 수행해야하는 이유를 많이 이해하지 못했습니다. 다음은 코드입니다.2D 배열을 올바르게 삭제 하시겠습니까?
//intialising array
int size = 10000;
double **array = new double[size];
for(int i = 0; i < size; i++)
array[i] = new double[size];
//conventional de-initialise
for(int i = 0; i < size; i++)
delete[] array[i];
delete[] array;
//reverse de-initialise
for(int i = size - 1; size >= 0; i--)//notice reverse order here
delete[] array[i];
delete[] array;
제 질문은 2D 배열을 할당 해제하는 2 가지 방법간에 중요한 차이점이 있습니까?
C++ 규칙은 오브젝트가 생성 된 순서의 역순으로 오브젝트를 제거하는 것입니다. 그러나이 규칙은 객체가 서로 의존하는 경우를 제외하고는 동적으로 할당 된 객체와 거의 관련이 없습니다. – jxh
아니요 (하지만 그 중 하나를 선택해서는 안됩니다). –
@Jerry 나 한테해야한다고 말한 이유를 말해 줄 수 있니? –