반응형
Box
- heap에 할당된 값에 대한 소유권을 가진다는 뜻
- 일반적으로 heap 메모리에서 할당된 데이터를 관리하기 위해 사용됨
- C++의 'unique_ptr'와 유사하며, 스택에 할당되는 대신 heap 메모리에 할당됨
Rc
- reference counting을 의미하며, 여러 개의 소유권이 필요한 경우 사용됨
- 여러 개의 소유권을 가질 수 있으며, 이를 통해 동일한 데이터에 대한 여러 개의 참조를 추적할 수 있음
- C++의 'shared_ptr'와 유사하며, 여러 개의 소유권을 추적하여 해당 데이터가 더 이상 필요하지 않을 때 자동으로 제거됨
공통점
- 메모리 관리에 큰 도움을 줄 뿐만 아니라 코드의 안전성을 높이는 데 도움이 됨
예제 코드
use std::rc::Rc;
fn box_value() {
// Box로 heap에 할당된 값 생성
let boxed_value = Box::new(10);
// Rc로 boxed_value를 참조하는 shared reference 생성
let mut shared_reference = Rc::new(boxed_value);
// shared_reference를 클론하여 새로운 shared reference를 생성
let shared_reference_clone = shared_reference.clone();
// boxed_value 값을 20으로 바꿈
let mut mutable_reference = Rc::make_mut(&mut shared_reference);
*mutable_reference = Box::new(20);
// 모든 reference가 변경된 값을 공유
println!("Value: {}", *shared_reference_clone);
println!("Value: {}", *shared_reference);
}
728x90
반응형
'개발 > Rust' 카테고리의 다른 글
Rust의 스레딩 모델과 std::thread 알아보기 (0) | 2023.06.16 |
---|---|
Rust를 이용한 안전한 동시성 프로그래밍 예제 (0) | 2023.06.14 |
Rust의 Option과 Result 열거형 (0) | 2023.05.10 |
Visual Studio Code를 이용한 Rust Debug (0) | 2023.04.29 |