:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
06/10/04 23:28
a[0]부터 a[29]까지 값을 입력해서 쓸수 있는것은 맞지만
두가지가 같은것은 아닌건 아시죠? 메모리가 할당되는 영역이나 참조할수 있는 영역이나 생존영역 등등이 다릅니다. b[n] 이란 명령어는 할당된 메모리를 읽는게 아니라 b가 가진 메모리로부터 n번째 뒤의 메모리를 읽으라는 명령입니다. 그것은 b가 가진 메모리로부토 프로그래머가 몇개나 연속으로 명시적으로 쓰겠다고 할당했냐와는 무관하게 그저 그 n번째 메모리를 읽거나 써줄 뿐이죠. 그런데 자기가 쓰겠다고 확실히 명시하지 않고 맘데로 아무데나 읽고 쓰면 엉뚱한 결과가 나오기 쉬운 것처럼... 저런식으로 할당되지 않은 영역을 쓰고 읽는것은 돌아갈때가 있고 망가질때도 있고.... 한마디로 결과가 어떻게 될진 나도 몰라 가 됩니다. 물론 저경우야 프로그램이 워낙 단순하니 문제가 안생긴 케이스이죠. C의 경우엔 메모리 관리가 생명이면서 가장 중요하고도 귀찮은 부분이죠.
06/10/05 00:04
C는 배열의 범위 체크를 안 합니다. (JAVA 는 체크 합니다)
실제로 할당한 범위 밖의 데이터는 쓰레기 값이며, 읽을 때마다 아마 다른 값이 읽혀 질 것입니다. 만약 할당한 범위 밖의 데이터를 쓰면, 운이 좋으면 아무 이상 없이 동작하겠지만, 보통의 경우는 segment fault 를 보게 될 겁니다.
|