登录
首页 >  Golang >  Go问答

能够使用 cgo 分配内存以保存 Go 结构体是一个被支持的用例吗?

来源:stackoverflow

时间:2024-03-23 08:06:22 114浏览 收藏

在 Go 中使用 cgo 分配内存以保存 Go 结构体是一个有争议的用例。有些人认为这是受支持的,而另一些人则认为这是错误的。

问题内容

我一直在探索不将嵌套 go 指针传递到 c 中的策略。下面是我如何尝试分配 c 内存块以保存 go 结构的示例:

(*MyGoStruvt)(C.calloc(1, unsafe.Sizeof(MyGoStruvt{})))

有谁知道这是否是受支持的用例?如果不是,有人可以解释一下这种方法有多么错误吗?


解决方案


规则很简单:如果您使用 malloc、calloc 等分配内存,则您接受 C 内存管理策略。 Golang 运行时不知道有关您的分配的任何信息。所以你必须明确并在某个时候拨打免费电话。否则就是内存泄漏。

本篇关于《能够使用 cgo 分配内存以保存 Go 结构体是一个被支持的用例吗?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>