함수들이 스택에 쌓이게 될 때 여러 지역변수와 매게변수에 대한 정보, 호출한 함수가 끝나고 돌아올 주소에 대한 정보를 갖고 스택 프레임이 만들어 지게 됩니다.
그리고 해당 함수가 종료되면 해당 지역 변수들이 프레임에서 제거가 됩니다.
예를들어
int result;
int Add(int a, int b)
{
int c = a + b;
return c;
}
void main()
{
int a = 10;
int b = 5;
result = Add(a, b);
cout << result;
}
main함수의 스택 프레임에서는 지역변수 a, b / Add란 함수에 대한 매게변수의 정보,
그리고 다시 main함수로 돌아가기 위한 반환주소로 스택 프레임이 형성 됩니다.
참고: 스택의 크기는 운영체제와나 컴파일러 설정에 의해 결정됨
각 스택 프레임의 크기는 해당 함수의 지역변수, 매개변수, 반환주소(복귀주소)에 따라 결정됨
이러한 부분을 참고해서 스택 오버 플로우가 나지 않게 해줘야함