在寻找答案时我发现这个问题,但是没有提到静态生命周期对象。这个答案中提到的方法可以吗(调用drop()
在对象上)可用于静态生命周期对象吗?
我想象了一种类似链表的情况。您需要(可能)在程序的整个生命周期中保留列表的节点,但是您也可以从列表中删除项目。在程序的整个执行过程中将它们保留在内存中似乎很浪费。
Thanks!
不。最重要的是static
它是静态的:它在内存中有一个固定的地址,不能从那里移动。因此,每个人都可以自由地引用该对象,因为只要程序正在执行,它就保证存在。这就是为什么你只能使用static
以一个形式&'static
-引用并且永远不能声明所有权。
此外,为了节省内存而这样做是没有意义的:该对象被烘焙到可执行文件中并在访问时映射到内存。所有这些could发生的情况是操作系统放弃内存mapping。然而,由于内存从一开始就没有从堆中分配,因此没有任何节省。
唯一的你could要做的就是使用不安全的可变访问来替换对象。这既危险(因为编译器可以自由地假设对象实际上没有改变),又毫无意义,因为内存无法释放,因为它是可执行文件内存映射的一部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)