에러문구 : _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
'C++' 카테고리의 다른 글
memset 주의할 점 (0) | 2017.07.11 |
---|---|
_countof 는 포인터로 하면 안된다. (0) | 2017.06.30 |
문자열 char, wchar, TCHAR 비교 ( ASCII, Unicode 비교 ) (1) | 2017.06.20 |
[VS] 정규식 활용하여 #if !define() 전처리기 지시문 #if define() #else로 수정하기 (0) | 2017.02.21 |
[C++ 실행시 에러] 처리되지 않은 예외, 액세스 위반이 발생했습니다 (0) | 2017.02.07 |