본문 바로가기

에러🚨

[C++] HEAP CORRUPTION DETECTED 오류

728x90

C++ 프로젝트를 하면서 실행을 끝내고 종료할 때 오류가 떴다..! (이런 메시지를 띄웠다. -> 'HEAP CORRUPTION DETECTED')

그래서 디버거를 이용하여 오류의 원인을 찾아보았다. 

 

 

그 결과 . . . !

 

 

문자열을 동적으로 생성할 때 문자열의 크기를 잘못 정해주었던 탓이었다.( ex: char* name = new char[strlen("홍길동")]; )

어떤 문자열의 길이를 strlen() 함수로 얻어내고, +1을 해주어야 문자열 끝에 들어가는 '\0'값이 들어가는데 나는 +1을 해주지 않아서 문제가 났던 거였다.

나는 그 문자열을 delete해줄 때 오류가 났는데 문자열의 끝이 어딘지 찾지 못해서 오류가 난 것 같다!

앞으로 +1을 꼭 추가해서 문자열 공간을 생성해야겠다!

 

오류 해결

고치기 전 char* name = new char[ strlen("홍길동") ];
고친 후 char* name = new char[ strlen("홍길동") + 1 ];