본문 바로가기
컴퓨터공학/C,C++,C#

C에서 가장 실수하기 쉬운 버그

by 무에서 2017. 8. 6.
반응형

C에서 가장 심각하고 흔하게 하는 실수는 배열이 Overflow되는 것이다.


int a[5];

int i = 5;

a[i]=1;


위와 같은 코드에서 배열 a의 인덱스는 0~4인데 i에 5을 넣어 배열의 범위를 넘었다. 이때 넘어간 영역은 다른 변수의 값이 저장되어 있는 영역인데 그곳에 의도하지 않은 값이 저장되어 프로그램이 이상 동작을 한다.



Visual C++에서는 실행 중 Overflow 되면 Run-time 에러 메세지를 띄우지만, 일반적인 C에서는 이러한 문제를 검출하여 메세지를 띄우지 않기 때문에 프로그래머가 직접 찾아야 하지만 이러한 버그는 찾기가 매우 어렵다.


C에서 이러한 문제를 그대로 둔 이유는 프로그램 실행 속도 때문이다. 배열에 접근할 때마다 일일이 검사를 하면 프로그램 실행 속도가 매우 떨어진다.


반응형

'컴퓨터공학 > C,C++,C#' 카테고리의 다른 글

C++의 Class 기본 사용법  (0) 2017.08.19
C에서 static 사용  (0) 2017.08.06
Visual C++와 C#의 차이  (0) 2017.08.01
[C#] 숫자를 16진수 문자로 변환  (0) 2017.08.01
[C#] textBox에 문자 추가하기  (0) 2017.07.31

댓글