컴퓨터공학/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에서 이러한 문제를 그대로 둔 이유는 프로그램 실행 속도 때문이다. 배열에 접근할 때마다 일일이 검사를 하면 프로그램 실행 속도가 매우 떨어진다.


반응형