为了好玩,我决定创建一个 Scheme绑定到libpython,这样您就可以在Scheme程序中嵌入Python。我已经能够调用Python的C API,但我还没有真正考虑过内存管理。
mzscheme的FFI工作方式是,我可以调用一个函数,如果该函数返回一个指向
此外,我很难理解循环垃圾收集器文档。我需要注意哪些事项?特别是,我如何让Python意识到我对某些东西有引用,以便在我仍在使用它时不会将其收集?
mzscheme的FFI工作方式是,我可以调用一个函数,如果该函数返回一个指向
PyObject
的指针,则可以自动增加引用计数。然后,我可以注册一个终结器,在Scheme对象被垃圾收集时减少引用计数。我已经查看了参考计数文档,乍一看似乎没有任何问题(尽管在某些情况下可能不是最优的)。我是否漏掉了什么要注意的地方?此外,我很难理解循环垃圾收集器文档。我需要注意哪些事项?特别是,我如何让Python意识到我对某些东西有引用,以便在我仍在使用它时不会将其收集?