0

阅读Python CFFI 文档

该接口基于 LuaJIT 的 FFI (...)

LuaJIT 网站上阅读(关于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,您是否必须通过将其设置为 (ie) 来触发对使用实例化的变量的最后一个引用的销毁ffi.gc(= 需要一个特殊的函数进行释放,因为它的某些部分是动态分配的)ffi.NULL

4

1 回答 1

1

Python 的设计目的是,一旦不再引用它(或不久之后),所有对象都会被垃圾收集,就像任何其他垃圾收集语言(包括 Lua)一样。p = None显式设置(或)的技巧del p只会确保此局部变量p不会使对象保持活动状态。例如,如果它是此函数中最后完成的事情之一,那么它是没有意义的(除非有特殊情况)。你不需要它,就像你需要它来释放一个包含常规字符串对象的变量一样。

于 2016-03-31T21:46:26.847 回答