1
我在Go代码创建C结构,像这样:我必须使用Cgo创建的免费结构吗?
var data C.MyStruct_t
我一定要在某个时候手动释放他们,像我这样做,当我用CString的?随着CString的我经常做这样的事情:
ctitle := C.String(title)
defer C.free(unsafe.Pointer(&ctitle))
C.my_func(&ctitle)
我在Go代码创建C结构,像这样:我必须使用Cgo创建的免费结构吗?
var data C.MyStruct_t
我一定要在某个时候手动释放他们,像我这样做,当我用CString的?随着CString的我经常做这样的事情:
ctitle := C.String(title)
defer C.free(unsafe.Pointer(&ctitle))
C.my_func(&ctitle)
不可以,你只能在被通过C *alloc
功能分配什么叫free
。 C.CString
和C.CBytes
函数被记录为在内部执行,并要求使用C.free
。
在这种情况下,即使data
的类型为C.MyStruct_t
它也会在Go中分配,因此将由Go垃圾收集器处理。