当前位置: 代码迷 >> 综合 >> Rust:全局变量被覆盖时,会不会释放原有资源?
  详细解决方案

Rust:全局变量被覆盖时,会不会释放原有资源?

热度:42   发布时间:2023-12-12 15:29:47.0

为弄明白这个问题,写了下面的代码。其中全局变量 D 被覆盖两次,代码和运行结果如下:

use std::ops::Drop;struct Data(i32);impl Drop for Data {fn drop(&mut self) {println!("drop...{}", self.0)}
}static mut D: Data = Data(0);fn main() {unsafe {D = Data(1);D = Data(2);}
}========= run result ==========drop...0
drop...1

可见,全局变量重新赋值时,原有的内容会首先调用 drop 释放资源,然后才会把新值放进去,以保证不会出现内存泄露。

  相关解决方案