공장이야기/C/C++ 이라도 잘 하자

이차원 배열 동적 할당/해제 및 누수 체크

창신다이 2006. 10. 18. 20:59

char** pArrStr = new char*[10];
for (int i = 0; i < 10; i++) {
 pArrStr[i] = new char[20];
 sprintf(pArrStr[i], "Hello World - %d", (i + 1));
}

for (int j = 0; j < 10; j++) {
 cout << pArrStr[j] << endl;
 delete [] pArrStr[j];
}
delete [] pArrStr;
// [] 하지 않았을때 소멸자가 한번만 실행됨.
// 원시타입일 경우 차이 없음.

malloc 도 위와 같음.

추가.
동적할당 메모리 누수 체크

stdafx.h 파일과 같이 모든 소스에서 include 하는 파일에 추가.

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)

main() 에 추가.
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );