The interface is based on LuaJIT’s FFI (...)
阅读LuaJIT website(关于ffi.gc()
):
This function allows safe integration of unmanaged resources into the automatic memory management of the LuaJIT garbage collector. Typical usage:
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.NULL
来触发对使用ffi.gc
(=需要一个特殊函数进行释放,因为它的某些部分是动态分配的)实例化的变量的最后一个引用的销毁?你知道吗
Python的设计使所有对象在没有更多的引用时(或之后不久)都被垃圾收集,就像任何其他垃圾收集语言(包括Lua)一样。显式设置
p = None
(或del p
)的技巧只会确保这个局部变量p
不会使对象保持活动状态。例如,如果它是这个函数中最后做的事情之一,那么它是没有意义的(除非是特殊情况)。你不需要它,就像你需要它释放,比如说,一个包含常规字符串对象的变量一样。你知道吗相关问题 更多 >
编程相关推荐