Я вижу в документации ffi.C.free — это то, что я могу использовать для освобождения malloc. Я пытаюсь сделать это здесь:
callbacks.free_buffer = function(buffer)
print("free_buffer_callback")
ffi.C.free(buffer)
end
Я получаю эту ошибку:
missing declaration for symbol 'free'
Означает ли это, что я должен сначала распределить память по FFI? Я не могу сделать это в этой конкретной функции (потому что это параметр в обратном вызове). Что я могу сделать, чтобы освободить этот буфер?
РЕДАКТИРОВАТЬ: похоже, что все функции ffi.C не работают, даже вне функции обратного вызова. В противном случае мой ffi работает нормально?
Ой, не ставил free
в мой cdef
! Исправлена.
ffi.cdef[[
void free(void *ptr);
]]