Из документов Rust.Кто ответственен за освобождение памяти после использования коробки
Функция in_raw потребляет поле и возвращает необработанный указатель. Он не уничтожает T или не освобождает память.
в этом коде:
fn main() {
let b = Box::new("hello".to_owned());
let a: *mut String = Box::into_raw(b);
}
Я не использовал unsafe
блок и как результат, мы не должны иметь никаких утечек памяти. Итак, если объект Box не несет ответственности за освобождение памяти после ее потребления, но память не освобождена и недоступна для дальнейшего использования, а исходные указатели не принадлежат ресурсам, кто освободит память?
Вы можете протекать без использования 'unsafe'. Утечки памяти не нарушают безопасность памяти. – fjh
@fjh, спасибо за напоминание, я забыл об этом –