Rust:全局变量被覆盖时,会不会释放原有资源?
程序员文章站
2024-01-25 21:41:17
...
为弄明白这个问题,写了下面的代码。其中全局变量 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 释放资源,然后才会把新值放进去,以保证不会出现内存泄露。
上一篇: ACCESS数据库向MySQL快速迁移小程序_MySQL
下一篇: PHPCMS配置文件的读取