Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

따..딱히 공부하려고 포스팅하는 건 아니니까..!

HEAP CORRUPTION DETECTED 오류와 해결방법 본문

C/C++

HEAP CORRUPTION DETECTED 오류와 해결방법

보즈리 2015. 2. 11. 14:35




HEAP CORRUPTION DETECTED 에러의 원인은

malloc이나 new로 할당한 메모리의 영역보다 더 큰 영역에 접근하고자 했기 때문이다.




어떤 경우가 있는지 예를 들자면,


(1) new로 할당한 경우


char * a = new char[10]; 이라고 선언하고

a[10]이나 a[11]과 같이 원래 할당한 공간의 영역인 10보다 더 큰 영역에 접근하려고 하면 이와 같은 에러가 난다.



(2) malloc으로 할당한 경우


Test * test = (Test*)malloc(sizeof(Test*)); 

free(test);


이와 같이 메모리를 할당하고 해제했을 때 오류가 나는 경우이다.


실제로 위의 코드를 실행해보면 오류가 나지는 않지만

만약 malloc/free 부분에서 Heap 에러가 난다면 한번쯤 훑어봐야 하는 부분이다.


이 부분의 에러는 sizeof(Test)가 sizeof(Test*)보다 크기 때문에 일어나는 오류이다.


즉, 실제로 할당된 메모리의 크기는 sizeof(Test*)이지만

해제하려고 하는 메모리의 크기는 sizeof(Test)이기 때문에 Heap 에러가 나는 것이다.


그러므로 sizeof(Test*)를 sizeof(Test)로 바꾸면 해결 될 것이다.

'C/C++' 카테고리의 다른 글

C++ 한글 문자열(유니코드)  (0) 2015.10.04
C++은 객체지향 언어인가, 아닌가  (0) 2015.06.22
추상화(Abstraction)  (0) 2015.02.05
컴파일과 링크  (0) 2014.12.30
#define보다 const가 더 유용한 이유  (0) 2014.12.09
Comments