使用CGO 將Go 字串複製到C 字元指標
在Go 中使用CGO 時,常見的要求是將Go 字串複製到C 字元指標。雖然將 Go 字串分配給 C 指標似乎很簡單,但正確的方法涉及使用 C.CString 函數。
不正確的複製嘗試
代碼:
func copy_string(cstr *C.char) { str := "foo" C.GoString(cstr) = str }
不正確,因為 GoString 旨在將 C 字元指標轉換為 Go字串,而不是相反
正確的複製方法
根據CGO文檔,應該使用C.CString將Go字串轉換為C字串:
cstr = C.CString(str)
記憶體管理
請注意C.CString 為C字串分配記憶體但不釋放它。當您完成 C 字串後,您有責任透過呼叫
C.free(unsafe.Pointer(cstr))
來釋放此記憶體。
以上是如何使用 CGO 安全地將 Go 字串複製到 C 字元指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!