c

[c] 메모리 구조

ohojee 2023. 2. 19. 03:34

 

  • TEXT
    • 코드 영역 ⇒ 프로그램을 실행시키기 위해 구성되는 것들 저장
    • 제어문, 함수, 상수
  • DATA
    • 프로그램(메인함수) 실행 전에 선언되어 프로그램이 끝날 때까지 저장
    • 전역변수, 정적변수 저장
    • 더 세분화하면 초기화 된 변수/초기화되지 않은 변수 영역으로 나뉨
  • HEAP
    • 사용자에 의해 관리되는 영역
    • 동적할당된 변수
    • 낮은 주소에서 높은 주소로 저장
  • STACK
    • 함수 호출 시 변수들 저장
    • 지역변수, 매개변수
    • 함수가 종료되면 그 함수에 할당된 변수들을 메모리에서 해제
    • 높은 주소에서 낮은 주소로 저장
    • stack의 사이즈는 윈도우는 1MB, 리눅스는 8MB

heap영역과 stack영역을 합쳐 잔여 램만큼의 공간 할당 가능

stack - 높은 주소부터 offset과 같이 쌓임 ⇒ 속도 빠름
- 크기가 작음
heap - stack과 달리 사용/미사용의 개념으로 관리됨 ⇒ 메모리 공간에 구멍생길 수 o
- stack에 비해 속도 느림

메모리주소 1당 0000 0000, 즉 2^8까지 저장 가능, 그래서 char가 1byte인데 char형의 범위가 256인 것

 

참고 블로그

https://st-lab.tistory.com/198