주석처리된 15번째 줄은 int 크기의 수 "1개"를 담을 수 있는 메모리를 할당받게 됩니다.
이렇게 되면 입력 처리 중 스택의 크기가 2 또는 그 이상이 되어야 할 때 할당받은 메모리를 벗어난 곳을 사용하게 됩니다.
이 경우 프로그램의 실행 결과는 정의되지 않습니다. (기술적으로는 Undefined Behavior 라고 부릅니다).
malloc 를 사용하고 싶으시다면 n 을 입력받은 후에 할당받을 메모리 크기를 sizeof(int) * n 으로 설정하셔야 합니다.
pby2016 7년 전
아래 코드를 요약하면
1. 스택공간[10000]
2. 명령어횟수 입력(scanf함수)
3. 명령어 비교(strcmp함수)
4. 명령어 수행(if함수)
5. 정상 작동
궁금한점은
스택 공간에서 15번째 줄에 주석처리해놓은 malloc 부분을 사용하면 런타임에러가 나는데 이유를 알 수 있을까요?