我在C
中有以下功能char* strfunc()
{
char* ch=calloc(100,1);
strcpy(ch,"hello");
return ch;
}
然后在红宝石中我有
module XYZ
extend FFI::Library
ffi_lib "mylib.so"
attach_function :strfunc, [] , :string
end
我应该免费导入分配给返回的字符串的空闲内存吗?或者Ruby GC会为我做这个吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
也不是FFI,也不是ruby GC会自动释放它,因为它们不知道它是malloc'd而不仅仅是一些静态内存。
您应该使用libc的free()
电话手动释放它。请参考此票证https://github.com/ffi/ffi/issues/467以获取示例。