首頁 > 後端開發 > Golang > 如何使用 CGO 安全地將 Go 字串複製到 C 字元指標?

如何使用 CGO 安全地將 Go 字串複製到 C 字元指標?

Mary-Kate Olsen
發布: 2024-12-01 08:11:10
原創
1056 人瀏覽過

How Do I Safely Copy a Go String to a C Char Pointer Using CGO?

使用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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板