• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    미해결

스택 영역의 크기는 정적인가요? 동적인가요?

23.08.17 19:46 작성 조회수 586

0

  1. 스택의 크기는 컴파일 타임에 결정되므로 정적 할당 영역 이다.

  2. 스택의 크기는 런타임에 크기가 변할 수 있는 동적 항당 영역이다.

  3. 스택의 크기는 컴파일 타임에 결정되므로(예로 100) 정적할당이면서, 런타임에 스택에 데이터가 저장됨에 따라 스택의 크기는 10, 20, 30, 20, 15 이런식으로 변할 수 있으니까, 동적 할당 영역이기도 하다.

 

특정 책에서는 스택을 동적 할당 영역이라고 설명하고, 특정 대학 강의에서는 스택은 컴파일 타임에 크기가 결정된다고 설명합니다. 해당 강의에서는 이에 대한 내용이 없는 것 같은데, 어떤 설명이 맞는건지 궁금합니다.

답변 1

답변을 작성해보세요.

0

국민건강보험님의 프로필

국민건강보험

2023.08.19

스택은 정적 할당된 영역이라고 볼 수 있습니다. 우리가 작성한 함수가 실행되면 가장 먼저 해당 함수에서 사용되는 지역 변수들의 크기에 맞춰 스택 메모리가 할당됩니다. 이때 할당은 새로운 메모리 영역을 할당받는 것이 아니라 현재 SP 레지스터가 가리키고 있는 위치를 이동시켜 사용함을 의미합니다. 따라서 해당 함수는 매 호출마다 SP를 스택 크기만큼 이동하여 동작한 후 return을 만나게 되면, 함수가 호출되기 전 SP 레지스터 위치로 복구하여 이전 함수에서의 context를 유지하게 됩니다.

이지훈님의 프로필

이지훈

질문자

2023.08.21

답변 감사합니다.

그런데 "혼자 공부하는 컴퓨터구조 운영체제"라는 책에서
"힙 영역과 스택 영역은 프로세스 실행 과정에서 그 크기 가 변할 수 있는 영역입니다. 그래서 이 두 영역을 동적 할당 영역이라고도 부르지요." 라고 설명하는데, 어떻게 해석해야할지 어렵네요 ㅎㅎ;