다음 코드에서 "기본"범위를 종료 할 때 "상자 5i"가 올바르게 해제됩니까? 그들의 pointer guide에있는 문구는 변수가 범위를 벗어날 때 자동 "free()"호출이있는 것처럼 상자 유형의 변수가 작동 함을 나타냅니다. 그러나이 코드에서 "a"에 "free()"를 지정하면 힙에있는 "상자 8i"가 해제됩니다. "a"가 원래 가리키는 "상자 5i"는 어떻게됩니까?참조가없는 경우 Rust의 상자 유형이 자동으로 해제됩니까?
fn foo(a: &mut Box<int>) {
*a = box 8i;
}
fn main() {
let mut a = box 5i;
println!("{}", a); // -> "5"
foo(&mut a);
println!("{}", a); // -> "8"
}
감사합니다. 프로그램이 실행되는 동안 가비지 수집이 아니라는 것을 알았습니다. 원래 상자가 자동으로 해제되었는지는 알 수 없었습니다. 나는이 평생 모델 – jefftime
@MatthieuM에 대한 이해를 얻기 위해 여전히 노력하고 있습니다. 아, 미안, 오타. 나는 질문에 따라'a : & mut Box '을 가지고 있었다. (결정된.) –
huon