[C] 스택 메모리
카테고리: C
태그: Memory
이 글은 스택 메모리를 공부하고 정리한 글입니다
- 각 함수에서 사용하는 지역 변수 등을 임시적으로 저장하는 공간
- 스택 메모리의 크기는 프로그램 빌드 시에 결정된다
- 스택 메모리의 위치는 실행 시에 결정된다
- 기본 자료형을 함수 매개변수로 전달하면 스택에 복사본을 만든다
- 지역변수를 선언하면 스택에 다 쌓이고 매개변수로 기본 자료형을 전달하면 밑에 그림과 같이 지역변수 밑 주소 스택에 쌓인다
- 매개변수로 들어온 변수의 주소와 원본 변수의 주소가 다르니 함수 안에서 매개변수를 바꿔도 원본은 바뀌지 않는다
- 스택 메모리를 빌리고 반환할 때마다 언제나 빈 공간없이 차곡차곡 쌓여 있음
- new로 만든 데이터는 힙 메모리에 할당된다
- 스택은 큰 주소에서 작은 주소로 쌓인다
- ESP (Extended Stack Pointer) : 현재 스택 포인터
- EBP (Extended Base Pointer) : 현재 스택 프레임의 기본(첫) 주소
- 스택 프레임(stack frame) : 각 함수가 사용하는 스택 메모리의 범위
- 스택 메모리보다 더 많은 메모리를 사용하려는 순간 스택 오버플로가 난다
- 따라서 너무 큰 데이터를 사용할 때는 스택에 넣을 수 없음
- 이럴 경우에 사용하는 것이 동적 메모리 할당이다
참조
💻 열심히 공부해서 작성 중이니 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 알려주시면 감사하겠습니다! 😸
댓글 남기기