如何在Golang中通过CGO将Go字符串复制到C char*?

ste*_*iss 7 go cgo

我想通过CGO将Go字符串复制到char*中.

我可以这样做吗?

func copy_string(cstr *C.char) {

    str := "foo"
    C.GoString(cstr) = str

}
Run Code Online (Sandbox Code Playgroud)

jnm*_*oal 12

根据cgo文档,您需要使用C.CString函数将Go字符串转换为C字符串:

cstr = C.CString(str)
Run Code Online (Sandbox Code Playgroud)

请注意C.CString函数为您分配内存,但不会释放它,因此您可以通过以下调用释放内存:

C.free(unsafe.Pointer(cstr))
Run Code Online (Sandbox Code Playgroud)

  • 最好使用 `defer C.free(unsafe.Pointer(cstr))` go 将在函数返回时调用 (4认同)