我正在用 C 语言做解释器,但我的引用计数有问题。
每个value
(这是解释器的表示......一个值)都分配有refcount
0。一旦它被添加到堆栈中,它就会增加refcount
.
从堆栈中取出的唯一方法是将其value
从堆栈中弹出,但这会导致问题。我的弹出函数返回value
弹出的值,但如果refcount
是 0 并且我破坏了该值,我将无法再返回它。
我知道我可能应该把refcount
支票放在其他地方,但这看起来很难看,因为有很多地方使用弹出功能。
我可以做些什么来解决这个问题?在这种情况下是否需要实现真正的 GC 算法?