在 D 中是否可以告诉垃圾收集器不要扫描特定指针(或其下面的任何内容)?

问题描述 投票:0回答:1

我有一个非常大的树结构,1)在程序运行期间不经常删除节点,2)从自定义分配器获取其节点,该分配器有自己对节点所断开的内存块的引用.

有什么办法可以阻止GC扫描树吗? 理想情况下,我想要类似

core.memory.GC.removeRoot()
的东西,它适用于以前未通过
core.memory.GC.addRoot()
添加的根,但我对任何能给我这种效果的东西都很好(也许是一种关闭特定模块的 GC 的方法(除非通过
GC.collect()
)?) 显式调用。

garbage-collection d
1个回答
0
投票

当您分配内存时,如果您自己使用 GC.malloc 而不是普通的

new
运算符进行分配,则可以向其传递一个 NO_SCAN 标志,然后
emplace
您的结构位于顶部。但要格外小心,因为如果不对其进行扫描,它所指向的东西很可能会在您身上消失并导致疼痛。

© www.soinside.com 2019 - 2024. All rights reserved.