본문 바로가기

Rust

러스트 프로그래밍 - 힙(heap)영역과 스택(stack)영역

https://www.yes24.com/Product/Goods/116586619

 

만들면서 배우는 러스트 프로그래밍 - 예스24

고효율, 현대적 프로그래밍 언어 Rust의 결정적 해설서!러스트는 효율적이고 신뢰할 수 있으며 생산성이 높은 언어로, 프로그래머가 가장 배우고 싶어 하는 언어로 꼽힌다. 배울 가치가 높은 언

www.yes24.com


 
 

힙(heap) 영역에 저장된 메모리는 임의의 순서로 메모리를 확보하거나 해제할 수 있다.원할 때 만큼 메모리를 확보할 수 있다. 예를들어 문자열(String 타입)이나 구조체같이 가변크기 같은 변하는 데이터는 힙영역에 저장되서 소유권관리를 받게된다.

소유권 이동



반면 스택(stack) 영역은 이미 데이터가 정해져 있어서 예를 들어 숫자 데이터 등의 기본 타입 데이터는 스택영역에 저장되므로 데이터 복제가 빠르고 쉽다. 그래서 소유권이 적용안된다.

1번부분에서 g1값이 g2에 대입된다. 이때 숫자와 같은 기본 타입 데이터는 스택(stack)영역에 저장되므로 직접 복사가 된다. 반면 문자열과 같은 가변 데이터는 힙(heap)영역에 보관되므로 소유권 시스템의 관리를 받게 된다. 따라서 힙영역은 복사가 아니라 소유권 이동으로 처리된다.