포스트

Memory Heap/Stack

Memory Heap/Stack

Heap


주로 메모리 동적 할당
i.e. malloc, calloc, realloc

  • Heap => Use CLR’s Garbage Collector
    • 힙에 더 이상 사용하지 않는 객체가 있으면, 그 객체를 쓰레기로 간주하고 수거
    • 왜 자동으로 메모리 리턴을 해주는 스택 대신 힙을 쓰는가?
    • Because 코드블럭이 끝나도 데이터를 유지하고 싶을 때
    • So 프로그머가 원한다면 언제까지라도 데이터를 살릴 수 있는 또 다른 메모리 영역 Heap을 CLR이 제공

관계


Heap과 Stack은 같은 영역의 공간을 사용함.

Heap: 메모리 위쪽 주소부터 할당.
Stack: 메모리 아래쪽 주소부터 할당.

Heap Overflow, Stack Overflow.

Stack


@@ Assembly

Assembly가 빈번하게, 저장되는 값 저장, Subroutine, Procedure 등
Stack 자료 구조
BasePointer 시작 위치를 BP 레지스터, StackPointer 제일 위 위치를 SP 레지스터
Glow Down, 다른 메모리 영역과 달리 거꾸로 자란다

  • Stack => 쌓였다가, 코드 블럭이 끝나면 차례대로 풀림 (메모리에서 제거)
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.