從Rust文檔。誰是負責釋放內存後消耗內存
在此代碼into_raw函數消耗一個盒子並返回原始指針。它不會銷燬T或釋放任何內存。
:
fn main() {
let b = Box::new("hello".to_owned());
let a: *mut String = Box::into_raw(b);
}
我沒有使用unsafe
塊和作爲結果,我們應該沒有內存泄漏。因此,如果Box對象在使用後沒有責任釋放內存,但內存不會被釋放並可供進一步使用,並且原始指針不會由資源擁有,誰將釋放內存?
您可以在不使用'unsafe'的情況下泄漏內存。內存泄漏不會違反內存安全。 – fjh
@fjh,感謝提醒,我忘記了這一點 –