我在 Go 代码中创建 C 结构体,如下所示:
var data C.MyStruct_t
Run Code Online (Sandbox Code Playgroud)
我是否必须在某个时候手动释放它们,就像使用 CString 时所做的那样?使用 CString 我经常做这样的事情:
ctitle := C.String(title)
defer C.free(unsafe.Pointer(&ctitle))
C.my_func(&ctitle)
Run Code Online (Sandbox Code Playgroud)
不。您只能调用free通过 C 函数分配的内容*alloc。和函数被记录为在内部执行此操作C.CString,C.CBytes并且需要使用C.free.
在这种情况下,即使data是类型C.MyStruct_t,它也是在 Go 中分配的,因此将由 Go 垃圾收集器处理。
| 归档时间: |
|
| 查看次数: |
1195 次 |
| 最近记录: |