gpt4 book ai didi

rust - 有没有办法在 Rust 中删除静态生命周期对象?

转载 作者:行者123 更新时间:2023-11-29 08:15:13 26 4
gpt4 key购买 nike

在搜索答案时,我找到了 this question ,但是没有提到静态生命周期对象。这个答案中提到的方法(在对象上调用 drop() )可以用于静态生命周期对象吗?

我在想象一个类似链表的情况。您需要(可能)在程序的整个生命周期内保留列表的节点,但是您也可以从列表中删除项目。在程序的整个执行过程中将它们留在内存中似乎很浪费。

谢谢!

最佳答案

没有。 static 的关键在于它是静态的:它在内存中有一个固定地址,不能从那里移动。因此,每个人都可以自由地引用该对象,因为只要程序在执行,它就会一直存在。这就是为什么您只能以 &'static 引用的形式使用 static 并且永远不能声明所有权。

此外,为了节省内存而这样做是没有意义的:对象被烘焙到可执行文件中并在访问时映射到内存。 可能发生的只是操作系统放弃内存映射。然而,由于内存从来没有从一开始就从堆中分配,因此没有任何节省。

可以做的唯一一件事就是使用不安全的可变访问替换对象。这既危险(因为编译器可以自由地假设对象实际上没有改变)又毫无意义,因为内存无法释放,因为它是可执行文件内存映射的一部分。

关于rust - 有没有办法在 Rust 中删除静态生命周期对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58141569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com