界面基于LuaJIT的FFI(...)
继续阅读LuaJIT website(约ffi.gc()
):
此功能允许将非托管资源安全地集成到LuaJIT垃圾收集器的自动内存管理中。典型用法:
local p = ffi.gc(ffi.C.malloc(n), ffi.C.free)
...
p = nil -- Last reference to p is gone.
-- GC will eventually run finalizer: ffi.C.free(p)
因此,使用Python-CFFI,你是否必须触发销毁对使用ffi.gc
实例化的变量的最后一个引用(=需要一个特殊的函数来解除分配,因为它的某些部分是动态分配的)将其设置为({)ffi.NULL
?
答案 0 :(得分:1)
Python的设计使得所有对象在没有更多引用(或不久之后)时就会被垃圾收集,就像任何其他垃圾收集语言(包括Lua)一样。明确设置p = None
(或del p
)的技巧只会确保此局部变量p
不会使对象保持活动状态。例如,如果它是此函数中最后完成的事情之一,则毫无意义(除非特殊情况)。你不需要它,只需要释放一个包含常规字符串对象的变量。