CSAPP 3.10.3 범위를 벗어난 메모리 참조와 버퍼오버플로우 C에서 배열참조시 범위를 체크하지 않으며, 지역변수들이 스택에 보존용 레지스터들과 리턴주소 같은 상태 정보와 함께 스택에 저장된다. 이러한 조합 때문에 심각한 프로그램 에러가 발생할 수 있는데, 스택에 저장된 상태정보가 범위를 벗어난 배열의 원소에 대한 쓰기 작업에 의해 변경되는 것이다. 그러고 나서 프로그램이 레지스터값을 재 적재하거나 이렇게 변경된 상태정보를 사용해서 ret인스트럭션을 실행할 때, 심각한 결과를 초래한다. 일반적인 상태손실을 버퍼오버플로우라고 알려져있다. 일반적으로 gets나 저장공간을 오버플로우하게 되는 함수를 사용하는 것은 나쁜 프로그래밍 습관으로 평가한다. 자주 사용하는 strcpy,strcat,sprintf 같이..