티스토리 툴바

[C++] HEAP CORRUPTION DETECTED

Posted 2010/07/15 12:03 by Eridanus


발생 원인
1. 할당한 메모리보다 큰 범위를 참조하고 나서 메모리를 해제할 때 발생
2. 메모리를 중복 할당하는 경우에 발생
char* a = new char[strlen(tmpStr) + 1];
a = new char[i];

3. 구조체 메모리 동적 할당 시 발생

구조체를 사용함에 있어 동적 메모리를 할당했을 때 발생하는 경우이다.

프로젝트 속성에 보면 구성/속성 -> C/C++ -> 코드 생성 -> 구조체 멤버 맞춤 이라는
 속성이 있다. 이 속성이 일반적으로는 '기본값' 에 맞춰져 있지만
간혹 다른 값으로 맞춰져 있는 경우가 있다.

이렇게 되면 프로젝트 간에 비트수가 틀려지게 되어서
 메모리를 해제할 때 이와 같은 문제가 발생하는 경우가 있다고 한다.




주로 문자열을 다뤄야 할 경우에 자주 보게 되는 에러 메세지인 것 같다. 컴파일 에러가 아닌 런타임 에러인 만큼 발생 원인을 잘 기억해두었다가 발생 시 코드를 꼼꼼하게 살펴서 조기에 진압하지 않으면 매우 혼돈의 카오스 상태가 발생할 것 같다.

Write your message and submit