본문 바로가기
C++

동적할당 new 한 걸 delete했는데 왜 _CrtIsValidHeapPointer 에러가 날까

by juheeL 2017. 6. 20.

에러문구 : _CrtIsValidHeapPointer




구조체 안에


struct SStrunt

{

char* mChar;

SStruct()

{

mChar = new char[ 10 ];

}

~SStruct()

{

delete []mChar; // Error

}

}


이렇게만 하고 main 함수에서 구조체 객체를 만들어서 사용하면 에러가 나지 않는다.



그럼 왜 나느냐.




저 구조체를 vector 등 STL에 넣어서 사용했더니,


저 delete []mChar; 부분에서 에러가 난다.


뭐가 문제인것인가.


STL에서 clear할 때 delete를 시도하고 구조체에서도 delete 를 하려했다고 그런 에러인 것 같은데,


해결방법도 찾으면 나온다.  사용자정의함수를 추가하면 된다.



근데


STL에서 내가 new한걸 어떻게 알고 명시적으로 delete해야하는걸 어떻게 해준다는 건지 잘 모르겠다.


정리 더 하고


더 조사 해보자~







참조 : 


http://www.sysnet.pe.kr/Default.aspx?mode=2&sub=0&detail=1&pageno=0&wid=11153&rssMode=1&wtype=0


http://hashcode.co.kr/questions/2996/c-%EB%A9%94%EB%AA%A8%EB%A6%AC%ED%95%B4%EC%A0%9C-debug-assertion