登录
首页 >  Golang >  Go问答

能否将所有权从 Go 转移到C++?

来源:stackoverflow

时间:2024-02-08 20:24:24 483浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《能否将所有权从 Go 转移到C++?》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

想象一下,我在Go中new了一个字符串,并通过cgo将其地址传递给C++程序。 如何让Go垃圾收集永远忽略该字符串,就像Golang从不new这个字符串一样,并让C++决定何时释放内存?

我只能将Go对象指针传递给C++。 但我无法阻止Go垃圾收集来回收对象。


正确答案


如果“忽略”是指释放该字符串分配的内存:简单的答案是:永远不要再在 go 代码中使用它,不提供 GC。

在 Go 中使用 C 代码时,请务必记住,Go 和 C 都维护自己独立的内存管理系统。

GOLANG GC 将为该字符串释放内存。但是当你将它传递给 C 时,它也会为字符串分配内存,并且仅当你显式使用 defer C.free(someString) 时才释放它。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

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