티스토리 뷰

메모리 구조

 

Text Segment (code segment) 코드 영역

  • 작성한 실행 프로그램의 코드가 기계어(Instruction)로 저장되는 영역
  • CPU는 저장된 명령어를 하나씩 가져가서 처리
  • 프로그램이 시작할 때 저장되고 끝날 때까지 남아 있다.
  • read only

Data Segment 데이터 영역

  • Main 함수 호출 전 프로그램의 전역 변수, static 변수 등이 저장
  • 프로그램 실행되고 끝날 때까지 남아있고 2개의 영역으로 나뉜다.
    • BSS Segment(Block Started by Symbol) - Uninitialized Data Segment
      • 초기화 되지 않은 전역, static 변수들 → Runtime 시 OS에 의해 자동으로 초기화
    • Initialized Data Segment
      • 초기화 된 전역, static 변수로 실행 중 접근, 수정 가능
    • ROM에 위치한 영역이지만 RAM에 복사 후 값 수정, 저장 가능

Heap Segment 힙 영역

  • 프로그램 실행 중 사용자에 의해 동적으로 할당/해제 되는 영역
    • Runtime 시 메모리를 할당하기 때문에 느린 할당 속도
  • Reference type(class, array, delegate…) 데이터 저장
  • low address → high address
  • Runtime 시 크기 결정

Stack Segment 스택 영역

  • 함수 호출 시 할당되는 지역 변수, 파라미터 저장
  • Value type(struct, enum, primitive) 데이터 저장
  • Stack 구조로 함수 호출 시 push, return 시 pop
  • 저장 된 함수 호출 정보 = Stack Frame
  • High address → low address
  • Compile 시 크기 결정, OS에 따라 다름
    • 미리 할당 된 공간이기 때문에 Heap에 비해 빠른 할당 속도
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함