책에 잇는대로 해봤다
stack를 2개 지정했으면 B자동차까지 들어가고 C부터 에러가 난다고 되있는데
출력하면 출력문의 문자가 정상적으로 출력된다
왜 책이랑 다르게 나올까?
char stack[2];
int top=0;
stack[top]='A';
printf("%c 자동차가 터널에 들어감.\n",
stack[top]);
top++;
stack[top]='B';
printf("%c 자동차가 터널에 들어감.\n",
stack[top]);
top++;
stack[top]='C';
printf("%c 자동차가 터널에 들어감.\n", stack[top]);
top++;
stack[top]='D';
printf("%c 자동차가 터널에 들어감.\n", stack[top]);
top++;
stack[top]='E';
printf("%c 자동차가 터널에 들어감.\n", stack[top]);
top++;
stack[top]='F';
printf("%c 자동차가 터널에 들어감.\n", stack[top]);
top++;
stack[top]='G';
printf("%c 자동차가 터널에 들어감.\n", stack[top]);
top++;
stack[top]='H';
printf("%c 자동차가 터널에 들어감.\n", stack[top]);
top++;
top--;
printf("%c 자동차가 터널을 빠져나감\n", stack[top]);
stack[top]=' ';
top--;
printf("%c 자동차가 터널을 빠져나감\n", stack[top]);
stack[top]=' ';
top--;
printf("%c 자동차가 터널을 빠져나감\n", stack[top]);
stack[top]=' ';
top--;
printf("%c 자동차가 터널을 빠져나감\n", stack[top]);
stack[top]=' ';
들어간거보다 빼는게 많으면 printf문에 한글만 나오고 알파벳이 안나오는데, 들어가는건 스택 초기값 상관없이 끝없이 들어가네
이건 버퍼 오버플로우가 일어나고 있는거야
스택(여기서 말하는 스택 말고 프로그램의 내부적인 스택)에 지역변수가 할당되어 있는데 2칸 잡힌 메모리 뒤쪽까지 막 쓰고 있는거
딱봐도 런타임 에러날삘이구만 배열크기는 2인데 8개를 처집어넣는데 에러가 안나고 배기겠음?
배열을 하셨으니까요