Rust, 쉽게 하자!

스마트 포인터 2

[Rust] Box

2. Box 스마트 포인터는 데이터의 실제 내용은 heap에 있고 그 주소를 가리키는 포인터를 비롯한 헤더는 stack에 있어서 스코프에 따른 소유권 규칙을 지킵니다. Box는 정확히 이런 특징을 가지고 있는 가장 기본적인 스마트 포인터입니다. heap에 저장되는 구조체를 하나 만들고 Box에 넣어 특징을 살펴보겠습니다. fn main(){ // 1 let mut point1 = Box::new(Point { x: 1, y: 1}); println!("{:?}", point1); let mut point2 = point1; // 재할당 println!("{:?}", point1); } // Point 구조체 선언 #[derive(Debug)] pub struct Point { pub x: i32, pub..

Rust 입문 2022.10.15

[Rust] 스마트 포인터

1. 스마트 포인터 C에서와 마찬가지로 포인터는 메모리의 주소를 저장하고 있습니다. 스마트 포인터는 다른 포인터와 마찬가지로 주소를 저장하고 있습니다. 그런데 스마트 포인터가 가리키는 메모리 영역은 stack이 아니라 heap입니다. 즉 스마트 포인터의 헤더는 stack에 있고 실내용물은 heap에 있습니다. 스마트 포인터는 왜 필요할까요? String을 통해 생각해 봅시다. 우리가 이미 만나본 데이터 타입인 String은 대표적인 스마트 포인터입니다. 이 말은 String의 헤더는 stack에 있고 실내용물은 heap에 있다는 의미입니다. stack에 있는 String의 헤더에는 heap 영역에 있는 실제 값의 주소가 담겨 있습니다. 값이 stack에 있는 것과 heap에 있는 것은 뭐가 다를까요? S..

Rust 입문 2022.10.15
반응형