티스토리 뷰
[C언어 오류해결] Run-Time Check Failure #2 - Stack around the variable '변수이름' was corrupted 오류 한방에 해결하기
하늘과 나b 2012. 11. 25. 22:14
Run-Time Check Failure #2 - Stack around the variable '변수이름' was corrupted 오류 한방에 해결하기
C언어로 프로그래밍을 하다보면 아래와 같은 메시지가 나올 때가 있습니다.
Run-Time Check Failure #2 - Stack around the variable '변수이름' was corrupted
아래의 오류는 컴파일은 잘 되는데 실행할 때 발생하는 오류인데요.
해결방법을 연구해 보도록 하겠습니다.
아래 화면은 실제 위의 오류가 발생한 화면입니다.
원인은 무엇일까?
Run-Time Check Failure #2 - Stack around the variable '변수이름' was corrupted.
위와 같은 오류가 발생하는 원인은 무엇일까요?
그 원인은 바로 포인터에 있습니다.
지역변수(배열 변수나 클래스 변수나 관계 없음)의 주소(포인터)를 이용해서 그 변수에 값 등을 기록하려 할 때, 실제로 선언된 크기(할당된 크기)보다 더 큰 타입으로 기록하려고 할 때 발생합니다.
이는 결국 지역변수 스택을 망가지게끔 합니다.
실제로 예제를 보면서 확인을 해볼까 합니다.
문제가 되는 예제를 보도록 하겠습니다
아래 코드의 실행결과는 위에 보신 화면과 같습니다.
소스를 한번 보도록 하겠습니다.
#include <stdio.h> int main(void) { char a; printf("숫자 입력: "); scanf("%d", &a); printf("아스키 문자 출력: %c\n", a); return 0; }
위 소스를 보시면 char 형으로 변수 a를 선언한 후 scanf에서 int 형의 데이터를 받는 %d인자를 사용해서 데이터를 입력받고 있습니다.
여기서 a는 크키가 1바이트인 char형으로 선언했는데요. scanf에서는 크기가 4바이트인 int형으로 데이터를 입력받고 있습니다. 이런 경우 Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted 가 발생하게 되는 것이지요.
문제가 되는 예제를 수정해 보았습니다
문제가 되었던 부분을 수정해 보도록 하겠습니다.
#include <stdio.h> int main(void) { int code; char a; printf("숫자 입력: "); scanf("%d", &code); a = (char)code; printf("아스키 문자 출력: %c\n", a); return 0; }
어떤 변수를 사용할 때 정확한 타입으로 사용하는 버릇을 들이면 위와 같은 오류는 발생하지 않을 것 같습니다.
이런 오류로 고생하시는 분들이 없었으면 좋겠다는 마음으로 포스팅을 했는데요. 이만 마치겠습니다.^^
'IT 이야기 > 프로그래밍' 카테고리의 다른 글
[C언어] 숫자를 문자로 바꾸는 알고리즘 소스 (4) | 2013.03.30 |
---|---|
[프로그래밍 문제] 잘 정돈된 수 출력하기 (0) | 2013.03.25 |
[C언어] C언어 프로그래밍 - 시간 계산 소스 (16) | 2013.03.18 |
웹페이지에서 드래그 방지 소스 (6) | 2013.03.03 |
[C/C++] 1부터 n까지 합을 구하는 소스(재귀) (4) | 2012.11.29 |
[C언어 소스] *(별모양) 출력하는 예제 소스 (0) | 2012.11.22 |
자바스크립트(javascript)를 이용한 토글(toggle) 예제 (3) | 2012.11.21 |
JavaScript 오류 코드 모음 (0) | 2012.11.21 |
C언어 무료 컴파일러 추천! Code::Blocks (8) | 2012.11.21 |
[C언어] 특정키를 눌렀을 때 반복 종료 하기 (0) | 2012.11.21 |
- Total
- Today
- Yesterday
- W3Schools Online Web Tutorials
- 구차니의 잡동사니 모음
- [IT]블로거팁닷컴
- 비앤아이님의 블로그
- Blog Suspect
- 즐거운하루 blog
- zinicap의 검색엔진 마케팅(SEM)
- 머니야머니야님의 블로그
- [Friend] AtinStory
- [기타배우기]해브원 박스
- [웹표준] SINDB.com
- 해커 C 이야기
- [애드센스] 길라잡이
- 정순봉의 IT SCHOOL
- 씨디맨의 컴퓨터이야기
- 2proo Life Story
- 못된준코의 세상리뷰
- [IT강좌] 정보문화사
- IN 대전
- 에우르트는 나쁜남자 -_-
- 씬의 싱크탱크
- 엔돌슨의 IT이야기
- 진이늘이
- 'Cooltime'의 블로그
- 후이의 Tistory
- Soulstorage
- 앤드&엔드의 블로그
- June Blog
- 노지의 소박한 이야기
- gbWorld
- 인터넷 속 나의 생각
- HarshNix
- ART of WEB
- 녹두장군 - 상상을 현실로
- 스마트폰
- It
- JavaScript
- 안드로이드 어플 추천
- MBTI 검사
- 안드로이드
- C언어 소스
- MBTI
- 인터넷 익스플로러
- 예제 소스
- 인터넷
- 소스코드
- C
- 소스
- 프로그래밍
- HTML
- 모토로이
- 효과음
- 강의
- C언어
- 프로그래밍 문제
- php
- MBTI 강좌
- C언어 문제
- 리뷰
- MBTI 자료
- MBTI 테스트
- 안드로이드 어플
- 성공
- 강좌
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |