'스택'에 해당되는 글 1건

  1. 2017.03.29 [C언어] 변수 선언시 저장 공간에 대하여
2017. 3. 29. 19:21

안녕하세요. 게임 개발자 놀이터입니다.


이번 포스팅에서는 변수 선언시 저장되는 영역을 적어보려고합니다.


크게 4개 또는 3개의 영역이라 표현하는데요


순서대로 


텍스트, 데이터, 스택(Stack), 힙(Heap)


입니다. 또는 3가지로 나눌땐 텍스트와 데이터를 하나로 합쳐서 보기도 한다네요.


그럼 순서대로 적어보겠습니다.


텍스트 영역

프로그램의 실행 코드가 존재하는 영역입니다.

 즉, 내가 작성한 코드들이 이곳에 위치합니다.


텍스트는 비교적 간단하네요


데이터 영역

    • 전역 변수나 정적 변수(static)가 이곳에 기록됩니다.
    • 데이터 영역내에서도 3가지로 분류가 가능합니다
      • 읽기 전용 영역
        • Const나 상수 문자열 등이 이곳에 속합니다.
      • 읽기/쓰기 영역
        • 전역 변수중 초기화가 된 변수들입니다.
      • 초기화가 되지 않은 영역 (BSS (Block Started by Symbol))
        • 전역 변수이면서 초기화가 되지 않고 선언되거나 static으로 선언된 변수들입니다.


스택 영역(Stack)

    • 지역 자동 변수 (지역 auto변수) 입니다.
    • 메모리를 따로 설정하지않아도 함수 시작(스코프영역 진입)에 자동으로 생성되고 함수 끝(스코프영역 벗어남)에 자동으로 파괴됩니다.
    • 스코프 영역안에 잡힌 주소값을 가리키는 포인터 변수도 auto변수 이기 때문에 이곳에 위치합니다.
      • (단, 주소값을 가르킬뿐, 주소값의 영역은 다릅니다.)


힙 영역(Heap)

    • 일반적으로 malloc 처럼 동적으로 메모리를 할당받을때 이곳의 영역이 사용됩니다.
    • 이곳은 자동 파괴가 되지 않습니다.



이렇게 정리하고 보면 되게 간단한 4가지인데, 항상 필요할때 기억이 나질 않네요.


읽어주셔서 감사합니다.


Posted by 시리시안