use*_*276 2 memory-management go cgo
我在使用 cgo 的 Go 中有以下代码:
func foo() {
bar := new(C.struct_bar)
...
}
Run Code Online (Sandbox Code Playgroud)
函数完成执行后 bar 会被垃圾回收还是我需要显式调用 free?
是的,虽然struct_bar是 C 类型,但是内存是由 Go 分配的,会被 Go 收集。
然而,在 C 中分配的任何内存都不会被 Go GC 跟踪。C 代码应该自己管理它,但是在C.CStringGo 触发分配的情况下,您必须手动释放内存C.free。