본문 바로가기
Programming/Tips(C++,C#)

STL에서 map, vector등에 힙에 할당한 객체를 삽입한 경우

by 곰네Zip 2016. 9. 26.

STL에서 즉.. new를 이용하여 생성한 객체를 삽입할 경우. 반드시 delete를 해줄것.

예를들어

 vector<MyStrcut> objStruct;

 for( int i = 0; i < iMax ; i++){

   MyStruct *pObj = new MyStruct;

   objStruct.push_back(pObj);

 }

...

 vector<MyStruct>::iterator itr;

 for(itr = objStruct.begin(); itr != objStruct.end(); itr++){

   SAFEDELETE(itr);

 }

 objStruct.clear();

 

 뭐.. 대략 위에처럼..

 cf. SAFEDELETE는 내가 주로 사용하는 delete관련 코드를 매크로로 만들어둔것.

 #define SAFEDELETE(X) if( X != NULL){ delete X; X = NULL; } 

 위 매크로를 사용하는것은 포인터 객체를 delete할때에는 언제나.. NULL체크를 해주어야 하므로..

define을 해두면 한줄로 끝나지만 안하면 몇줄을 타이핑 해야한다. 그게 귀찮아서.. -_-a 항상 헤더에 정의하고 사용중..

반응형

댓글