J'ai cet exemple de code qui a une fonction text()
renvoyant une chaîne nouvellement allouée :
ffi_test = FFI()
ffi_test.set_source('_test', '''
char* test() { return strdup("hello world"); }
''')
ffi_test.cdef('''
char* test();
void free(void *);
''')
ffi_test.compile(verbose=True)
Cela fonctionne bien :
In [1]: from _test import ffi, lib
In [2]: x = lib.test()
In [3]: ffi.string(x)
Out[3]: b'hello world'
In [4]: lib.free(x)
Cependant, je n'ai pas pu trouver dans la documentation si je dois ou non manuellement free()
la chaîne retournée de si CFFI prend la propriété du pointeur dès qu'il est retourné au code Python.
Aussi, si je dois manuellement free()
est-ce que je dois exposer free()
dans mon cdefs ou est-ce que le CFFI fournit une façon plus agréable de le faire ?