acyclic 编译指示
acyclic 编译指示用来指示对象类型是无环的,即使看起来像是有环的。 这个信息是一种 优化 ,有了这个信息垃圾回收器不再需要考虑这个类的对象构成环的情况:
type
Node = ref NodeObj
NodeObj {.acyclic.} = object
left, right: Node
data: string
我们也可以直接使用引用对象类型:
type
Node {.acyclic.} = ref object
left, right: Node
data: string
这个例子里通过 Node 类型声明了一个树形结构。注意到这个类型的定义是递归的,GC 不得不考虑各对象可能构成一个有环图的情况。 acyclic 编译指示告知 GC 这不可能发生。如果程序员把 acyclic 编译指示赋予了实际上有环的数据类型,那么将导致内存泄露,但是不会破坏内存安全。
当前内容版权归 vectorworkshopbaoerjie 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 vectorworkshopbaoerjie .