194 words
1 minutes
251212_box_basic
2025-12-12

Box를 써야하는 이유#

  • Heap에 들어가서 성능저하가 발생하는 Box는 언제 써야할까?
    • 무지 큰 데이터를 쓸때 Box가 더 이득이다.
    • deep copy인지 shadow copy인지 모르겠지만
    • stack에 데이터를 저장을 하고 thread 로 send를 한다면 heap에서 저장하는게 더 이득
fn main() {
    // 타입이 정해져있다. 정적
    let a = 10;
    println!("a {a}");
    println!("Hello, world!");

    // Use heap allocation (Box) instead of stack for large arrays
    let x_big_array: Box<[[i32; 1000]; 1000]> = Box::new([[0; 1000]; 1000]);

    println!("x_big_array address : {:p}", &*x_big_array);
    println!("thread {:?}", std::thread::current().id());
    println!("pid: {:?}", std::os::unix::process::parent_id());
    println!("~~~~");

    let thread01 = std::thread::spawn(move || {
        let copy_data: Box<[[i32; 1000]; 1000]> = x_big_array;

        println!("pid: {:?}", std::os::unix::process::parent_id());
        println!("thread {:?}", std::thread::current().id());
        println!("copy data first element : {:p}", &*copy_data);
    });
    thread01.join().unwrap();
}
  • result
a 10
Hello, world!
x_big_array address : 0x7728e302f010
thread ThreadId(1)
pid: 103106
~~~~
pid: 103106
thread ThreadId(2)
copy data first element : 0x7728e302f010
251212_box_basic
https://younghakim7.github.io/blog/posts/251212_box_basic/
Author
YoungHa
Published at
2025-12-12