Я использую node-ffi для загрузки библиотеки и вызова функции, которая возвращает char *, указатель создается внутри разделяемой библиотеки.
Нужно ли создавать соответствующую функцию, которая может удалить буфер? например
main.cpp
char* get_error()
{
char* buf = new char[25];
buf[24] = '\0';
return buf;
}
void delete_buffer( char* buf )
{
delete[] buf;
}
test.js
var libTest = ffi.Library( 'libtest', {
'get_error': [ 'string', [] ],
'delete_buffer': [ 'void', [ 'string' ] ]
});
var test = libTest.get_error();
libTest.delete_buffer( test );
Когда я попробовал это, я получил segfault. Создает ли node-ffi автоматическую копию? Как я должен сделать это правильно?
Задача ещё не решена.
Других решений пока нет …