std::mem::drop 요약Rust의 소유권(Ownership)은 메모리 안전성을 보장하기 위한 핵심 시스템으로, 각 데이터가 하나의 소유자를 가지며 소유자가 범위를 벗어나면 메모리가 자동 해제됩니다. 이를 통해 런타임 가비지 컬렉션 없이 안전하고 효율적인 메모리 관리를 제공합니다.
fn main() {
let s1 = String::from("hello");
let s2 = s1; // 소유권 이동
// println!("{}", s1); // 컴파일 에러
println!("{}", s2); // 정상 출력
}
fn main() {
let s1 = String::from("hello");
let s2 = &s1; // 대여
println!("{}", s1); // 정상
println!("{}", s2); // 정상
}
std::mem::drop 함수Rust에서는 std::mem::drop을 사용해 데이터를 명시적으로 해제할 수 있습니다.
동작 원리:
코드 예시:
use std::mem;
fn main() {
let s = String::from("hello");
println!("Before drop: {}", s);
mem::drop(s); // 명시적 해제
// println!("{}", s); // 컴파일 에러
}
drop 호출 불가.let large_data = vec![0; 10_000_000];
std::mem::drop(large_data);
struct Resource;
impl Drop for Resource {
fn drop(&mut self) {
println!("Resource dropped!");
}
}
let res = Resource;
std::mem::drop(res);
Rust의 소유권은 메모리와 데이터 사용의 안전성을 컴파일 타임에 보장합니다. std::mem::drop을 통해 특정 시점에 메모리를 명시적으로 해제할 수 있으며, 이를 활용해 효율적이고 안전한 시스템 프로그래밍이 가능합니다.