
144
이펙티브 러스트
아이템
14
: 수명을 잘 파악하라
이번에는 러스트의 수명
lifetime
을 알아본다. 수명이라는 개념은
C
와
C
++를 비롯한 기존 컴파일
언어에도 있었지만 러스트에서는 이 개념을 이론보다는 실용적인 관점으로 더 정확하게 정리
했다. 수명은 아이템
15
에서 설명하는 대여 검사기의 필수 입력으로, 러스트에서 메모리 안전
성을 보장하는 데 핵심적인 요소다.
스택
수명은 기본적으로 스택
stack
과 연관된다. 여기서 스택을 간단히 소개하며 여러분의 기억을 되
살리고 넘어가려 한다.
프로그램이 실행되는 동안 사용하는 메모리는 세그먼트
segment
단위로 나뉜다. 그중 일부는 프
로그램 코드나 글로벌 데이터를 저장하는 세그먼트처럼 크기가 일정하지만, 힙
heap
과 스택은
프로그램 실행 중에 상태에 따라 크기가 달라진다. 이를 위해 [그림
3
-
1
]처럼 프로그램 가상
메모리 공간의 양쪽 끝에 힙과 스택이 배치된다. 그래야 하나는 아래쪽으로, 다른 하나는 위쪽
으로 확장할 수 있다. 적어도 메모리가 부족해 충돌이 발생하기 전까지는 말이다.
스택
힙
확장
확장
글로벌 데이터
코드
그림
3-1
스택은 아래로, 힙은 위로 증가하도록 배치된 프로그램 메모리 레이아웃