메모리
Rust 프로그램에는 데이터가 저장되는 세 가지의 메모리 영역이 있습니다:
- 데이터 메모리(data memory) - 크기가 고정 되었으며 static (i.e. 프로그램이 실행되는 동안 항상 사용 가능)한 데이터용.
프로그램의 텍스트를 생각해봅시다(예: "Hello World!"): 이 텍스트의 바이트들은 오직 한 곳에서만 읽히므로
이 영역에 저장될 수 있습니다. 이런 종류의 데이터는 컴파일러가 많은 최적화를 하며,
위치가 알려져 있고 고정되어 있기 때문에 일반적으로 사용하기에 매우 빠르다고 여깁니다.
- 스택 메모리(stack memory) - 함수 내에서 변수로 선언되는 데이터용.
이 메모리의 위치는 함수 호출 동안에는 절대 변하지 않기 때문에 컴파일러가
코드를 최적화할 수 있으며, 이로 인해 접근하기에 매우 빠릅니다.
- 힙 메모리(heap memory) - 애플리케이션이 실행되는 동안 생성되는 데이터용.
이 영역의 데이터는 추가하거나, 이동하거나, 제거하거나, 크기를 바꾸거나, 등을
할 수 있습니다. 이런 동적 속성 때문에 일반적으로 사용하기에 느리다고 여기지만,
훨씬 더 창의적인 메모리 사용이 가능합니다. 데이터가 이 영역에 추가되면
할당(allocation)이라고 부릅니다. 데이터가 이 영역에서 제거되면 해제(deallocation)라고 부릅니다.