Embedded/Programming language : C

[C] 선언한 배열의 index 이상을 접근하면 어떻게 될까?

별빛의온기 2022. 10. 27. 14:30
반응형

길이가 10인 1차원 배열이 있다고 하겠습니다.

 

그럼 index의 범위는 0 - 9 입니다. 만약 이를 초과한 10에 접근하면 어떻게 될까요?

 
 

 

우리의 컴파일러는 친절하게도 문제가 있다는것을 밑줄로 알려줍니다.

(Debug Mode에서는 프로그램을 실행하면 메모리 접근 에러가 납니다. 정말 친절해서 너무나 고마운나머지 Test는 Release Mode에서 진행했습니다. )

 

그런데 에러가 아닌 경고가 메시지가 발생합니다. 컴파일도 아주 잘 되죠. 동작시키면 쓰레기 값이 나오지만요 ^^ 

그럼 배열범위를 벗어난 메모리 값을 초기화를 해버리면 어떻게 될까요??

 

 

 

결과는 에러없이 아주 잘 동작합니다. 경고는 존재하지만요. 

 

이를통해 알 수 있는것!

 

1. 배열의 크기를 10으로 지정한다고 해서 10만 쓸수 있는것은 아니다. 배열의 이름은 첫번째 주소와 크기를 갖는 도구일뿐..

2. 디버그 모드에서는 이런 메모리 접근이 발생한다면 런타임 에러를 발생시키지만,릴리즈 모드에서는 발생하지 않기에 개발자가 모르고 넘어 갈 수도 있다.

3. 이러한것을 프로그래머가 잘 의도한다면 잘 써먹을수도 있다. ( ???? )

 

이상 쓸대없는 정보였습니다 ^^;;

 

반응형