我是否必须释放使用Cgo创建的结构?

时间:2017-01-23 16:55:01

标签: go cgo

我在Go代码中创建了C结构,如下所示:

var data C.MyStruct_t

我是否必须在某些时候手动释放它们,就像我使用CString时一样?使用CString我经常做类似的事情:

ctitle := C.String(title)
defer C.free(unsafe.Pointer(&ctitle))
C.my_func(&ctitle)

1 个答案:

答案 0 :(得分:4)

没有。您只能对通过C free函数分配的内容调用*allocC.CStringC.CBytes函数记录为在内部执行此操作,并且需要使用C.free

在这种情况下,即使data的类型为C.MyStruct_t,它也会在Go中分配,因此将由Go垃圾收集器处理。