[C] 스택 메모리

Date:     Updated:

카테고리:

태그:

이 글은 스택 메모리를 공부하고 정리한 글입니다

  • 각 함수에서 사용하는 지역 변수 등을 임시적으로 저장하는 공간
  • 스택 메모리의 크기는 프로그램 빌드 시에 결정된다
  • 스택 메모리의 위치는 실행 시에 결정된다
  • 기본 자료형을 함수 매개변수로 전달하면 스택에 복사본을 만든다
    • 지역변수를 선언하면 스택에 다 쌓이고 매개변수로 기본 자료형을 전달하면 밑에 그림과 같이 지역변수 밑 주소 스택에 쌓인다
    • 매개변수로 들어온 변수의 주소와 원본 변수의 주소가 다르니 함수 안에서 매개변수를 바꿔도 원본은 바뀌지 않는다
  • 스택 메모리를 빌리고 반환할 때마다 언제나 빈 공간없이 차곡차곡 쌓여 있음
  • new로 만든 데이터는 힙 메모리에 할당된다
  • 스택은 큰 주소에서 작은 주소로 쌓인다
  • ESP (Extended Stack Pointer) : 현재 스택 포인터
  • EBP (Extended Base Pointer) : 현재 스택 프레임의 기본(첫) 주소
  • 스택 프레임(stack frame) : 각 함수가 사용하는 스택 메모리의 범위
  • 스택 메모리보다 더 많은 메모리를 사용하려는 순간 스택 오버플로가 난다
    • 따라서 너무 큰 데이터를 사용할 때는 스택에 넣을 수 없음
    • 이럴 경우에 사용하는 것이 동적 메모리 할당이다


참조

포큐아카데미 C 언매니지드 프로그래밍



💻 열심히 공부해서 작성 중이니 오류나 틀린 부분이 있을 경우 
  언제든지 댓글 혹은 메일로 알려주시면 감사하겠습니다! 😸

맨 위로 이동하기

C 카테고리 내 다른 글 보러가기

댓글 남기기