<GroupBox>
<GroupBox.Header>
<StackPanel>
<Image Source="pic.png" Stretch="None"/>
<TextBlock Text="header..." />
</StackPanel>
</GroupBox.Header>
</GroupBox>
如果我将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
从c函数传递给python,python应该释放内存。但是,我该怎么办呢?
我目前的解决方法是在python中复制字符串,然后立即释放C中的字符串。因此,Python可以自动处理char *
使用的内存。
这样做的正确方法是什么?
答案 0 :(得分:1)
事实证明,我不需要复制s
,s
已经是cdata
的副本
def get_foo(x):
cdata = C.foo(x)
s = ffi.string(cdata)
C.free_string(cdata)
return s