4673번 - 셀프 넘버
왜 arr[10000]을 전역변수로 하면 맞고 지역변수로 하면 틀리는지 모르겠습니다.
왜그런건가요?
전역으로 해도 위험한 코드인데 운이 좋아서 통과되었을 뿐입니다.
https://www.acmicpc.net/board/...
제가 아무것도 몰라서그런데 혹시 왜 위험한지 알려주실 수 있을까요?
링크한 글을 읽어보세요. 9999는 무엇의 생성자라고 되어있나요?
일단 10000까지 돌릴꺼면 10001의 크기를 잡아야할 것 겥습니다.
생성된 수를 arr배열 해당 값을 하나씩 증가시키면서 나중에 0인 것을 출력하는데...
정작 arr을 초기화하진 않네요. 처음에 0일꺼라눈 가정인데 .
전역배열은 0으로 초기화가 되는 것이 맞으나 지역은 초기화가 안됩니다.
지역변수는 스택메모리에 잡혀서 단순 포인터 이동으로 할당되기 때문이고 전역변수는 실행할때 heap 영역에 0으로 초깋6ㅏ하면서 잡힙니다.
아... sum > 10000인 건 버리고 하셨군요. 그 부분은 제가 못 봤습니다. seico님 말씀처럼 10000번째 인덱스에 접근하는 것만 문제네요.
댓글을 작성하려면 로그인해야 합니다.
skiris1124 5년 전
왜 arr[10000]을 전역변수로 하면 맞고 지역변수로 하면 틀리는지 모르겠습니다.
왜그런건가요?