스택 프레임

메모리의 스택 영역은 함수의 호출과 관계되는 지역 변수와 매개 변수가 저장되는 영역이다.

스택 영역은 함수의 호출과 함께 할당 되며, 함수의 호출이 완료되면 소멸한다.

 

함수가 호출되면 , 스택에는 함수의 매개 변수, 호출이 끝난 뒤 돌아갈 반환 주소값,

함수에서 선언된 지역 변수등이 저장된다.

이렇게 스택 영역에 차례대로 저장되는 함수의 호출 정보스택 프레임 (Stack Frame)이라고 한다.

이러한 스택 프레임 덕분에, 함수의 호출이 모두 끝나면 해당 함수가 호출되기 이전 상태로

되돌아 갈 수 있다.

 

 

스택 오버플로우

함수의 재귀 호출이 무한히 반복되거나 , 함수 내의 지역 변수의 크기를 크게 설정하거나 하여,

스택의 여유 공간이 없을 때 또 다시 스택 프레임을 저장하게 되면,

해당 데이터는 스택 영역을 넘어가서 저장되게 된다.

 

 

이렇게 해당 스택 영역을 넘어가도 데이터가 저장될 경우 , 해당 프로그램은 오동작을 하거나

보안 상 취약점을 가지게 된다.

때문에 실행 중인 프로그램에서 스택 오버 플로우가 발생하면, 에러를 발생시키고,

곧바로 강제 종료된다.

 

프로그램이 호출 스택에서 이용 가능한 공간 이상을 사용하려고 할 때, 스택 오버 플로 된다고 한다.

'공부 > 개념 & 유용한 내용' 카테고리의 다른 글

데드락 & 해결 방법  (0) 2020.07.01
쓰레드와 프로세스의 차이점  (0) 2020.07.01
메모리 구조  (0) 2020.06.17
C# - 코루틴 & yield  (0) 2020.06.15
박싱 & 언박싱  (0) 2020.06.15

+ Recent posts