只是为了它,我决定创建一个与 libpython 的 Scheme 绑定,以便您可以将 Python 嵌入到 Scheme 程序中。我已经能够调用 Python 的 C API,但我还没有真正考虑过内存管理。
mzscheme 的 FFI 的工作方式是我可以调用一个函数,如果该函数返回一个指向 a 的指针PyObject
,那么我可以让它自动增加引用计数。然后,我可以注册一个终结器,它会在 Scheme 对象被垃圾回收时减少引用计数。我查看了有关引用计数的文档,乍一看并没有发现任何问题(尽管在某些情况下它可能不是最佳的)。我有什么遗漏吗?
另外,我在制作循环垃圾收集器文档的正面或反面时遇到了麻烦。在这里我需要记住什么?特别是,我如何让 Python 知道我引用了某些东西,以便在我仍在使用它时它不会收集它?