본문 바로가기
개발/Visual C++

Stack around the variable 'xxx' was corrupted 해결 방법

by belitino 2013. 9. 25.

출처: http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=822399&ref=822399

        http://bhnbhn.tistory.com/178

        http://blog.daum.net/big11m/170

 

위의 오류 메시지는 함수 내의 스택이 깨졌을 때 나오는 메시지인데 이는 지역 변수(배열 변수든 클래스 변수든 상관 없음)의 주소(포인터)를 이용하여 그 변수에 무엇인가를 기록하려고 할 때, 실제 변수에 할당된 크기보다 더 많은 부분에 기록하는 경우에 나타납니다.

 

이의 예는 다음과 같은 것들이 있을 수 있습니다.

 

1. 설정한 배열 인덱스를 초과하여 사용한 경우

    배열은 a[10] 해놓고 a[10]에 쓰는 경우입니다.

 

2. float 형 변수를 "%lf"로 scanf 하는 경우

1
2
3
4
float x;
CString buf;
 
sscanf(buf, "%lf", &x);