[golang/cgo]坑 C.CString 的结果应该立即释放不要将指针传递出去
clq
浏览(368) -
2024-02-24 13:19:20 发表
编辑
关键字:
[golang/cgo]坑 C.CString 的结果应该立即释放不要将指针传递出去
使用函数结果的时候很正常就会想能传递到别的地方,好复用。
但 cgo 操作得到的指针或者说临时结果是很特殊的。要马上在函数体内部释放掉!
这在官方 golang 书籍里就说了的:目前对这部分的实现还有未知性和不确定性。
func c2g_HexColor(hex string)int64{
var hex_ * C.char = C.CString(hex);
defer C.free(unsafe.Pointer(hex_)); //理论上说,是要立即释放的
//fyne 中也是这样用的。甚至还有这样的代码 buf := C.malloc(C.size_t(bufSize))
//C.c_HexColor(hex_);
var color C.int64_t = C.c_HexColor(hex_);
return int64(color);
}//
本帖子属于以下条目()
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.