반응형
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 |
댓글