컴퓨터공학/C,C++,C#
C에서 가장 실수하기 쉬운 버그
무에서
2017. 8. 6. 15:04
반응형
C에서 가장 심각하고 흔하게 하는 실수는 배열이 Overflow되는 것이다.
int a[5];
int i = 5;
a[i]=1;
위와 같은 코드에서 배열 a의 인덱스는 0~4인데 i에 5을 넣어 배열의 범위를 넘었다. 이때 넘어간 영역은 다른 변수의 값이 저장되어 있는 영역인데 그곳에 의도하지 않은 값이 저장되어 프로그램이 이상 동작을 한다.
Visual C++에서는 실행 중 Overflow 되면 Run-time 에러 메세지를 띄우지만, 일반적인 C에서는 이러한 문제를 검출하여 메세지를 띄우지 않기 때문에 프로그래머가 직접 찾아야 하지만 이러한 버그는 찾기가 매우 어렵다.
C에서 이러한 문제를 그대로 둔 이유는 프로그램 실행 속도 때문이다. 배열에 접근할 때마다 일일이 검사를 하면 프로그램 실행 속도가 매우 떨어진다.
반응형