可以将对象所有权从Go转移到C++吗?

ulydmbyx  于 2023-06-19  发布在  Go
关注(0)|答案(1)|浏览(117)

假设我在Go语言中创建了一个字符串,并通过cgo将其地址传递给C程序。我怎么能让Go语言的垃圾收集永远忽略这个字符串,就像Golang永远不会新建这个字符串一样,让C决定何时释放内存?
我只能将Go对象指针传递给C++。但是我不能阻止Go垃圾回收来回收对象。

dauxcl2d

dauxcl2d1#

如果忽略意味着释放这个字符串分配的内存:简单的答案是:永远不要在你的go代码中使用它,不要提供GC。
在Go语言中使用C代码时,重要的是要记住,Go语言和C语言都维护自己独立的内存管理系统。
GOLANG GC将为该字符串释放内存。但是当你把它传递给C时,它也会为字符串分配内存,只有当你显式使用defer C.free(someString)时才释放它。

相关问题