登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> SoftHub关联区 >> 主题: [golang/cgo]坑 C.CString 的结果应该立即释放不要将指针传递出去     [回主站]     [分站链接]
[golang/cgo]坑 C.CString 的结果应该立即释放不要将指针传递出去
clq
浏览(56) - 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);
}//







总数:0 页次:1/0 首页 尾页  
总数:0 页次:1/0 首页 尾页  


所在合集/目录
cgo的坑 更多
golang的坑 更多



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1