如何通过 golang 中的 CGO 将 Go 字符串复制到 C char *?
How do I copy a Go string to a C char * via CGO in golang?
我想通过 CGO 将 Go 字符串复制到 char * 中。
我可以这样做吗?
func copy_string(cstr *C.char) {
str := "foo"
C.GoString(cstr) = str
}
根据cgo documentation你需要使用C.CString函数将Go字符串转换为C字符串:
cstr = C.CString(str)
请注意,C.CString 函数会为您分配内存,但不会释放它,因此您有责任通过以下调用释放内存:
C.free(unsafe.Pointer(cstr))
正在使用
cstr = C.CString(str)
对我不起作用,所以我选择了我在 CGO library 上直接看到的东西:C.strcpy((*C.char)(cstr), (*C.char)(C.CString(str)))
我想通过 CGO 将 Go 字符串复制到 char * 中。
我可以这样做吗?
func copy_string(cstr *C.char) {
str := "foo"
C.GoString(cstr) = str
}
根据cgo documentation你需要使用C.CString函数将Go字符串转换为C字符串:
cstr = C.CString(str)
请注意,C.CString 函数会为您分配内存,但不会释放它,因此您有责任通过以下调用释放内存:
C.free(unsafe.Pointer(cstr))
正在使用
cstr = C.CString(str)
对我不起作用,所以我选择了我在 CGO library 上直接看到的东西:C.strcpy((*C.char)(cstr), (*C.char)(C.CString(str)))