在cffi中释放从c函数返回的字符串的规范方法?

2024-09-30 05:20:37 发布

您现在位置:Python中文网/ 问答频道 /正文

ffi = FFI()
C = ffi.dlopen("mycffi.so")


ffi.cdef("""
char* foo(T *t);
void free_string(char *s);
""")

def get_foo(x):
    cdata = C.foo(x)
    s = ffi.string(cdata)
    ret = s[:]
    C.free_string(cdata)
    return ret

如果我将一个char *从c函数传递给python,python应该释放内存。但是,我该怎么做呢?在

我目前的解决方法是在python中复制字符串,然后立即在C中释放该字符串。因此Python可以自动处理ret使用的内存。在

正确的方法是什么?在


Tags: 方法内存字符串freestringsofooret

热门问题