gopherchina2018-cgo-talk icon indicating copy to clipboard operation
gopherchina2018-cgo-talk copied to clipboard

go开辟空间给c用会内存泄露吗

Open liliang8858 opened this issue 6 years ago • 5 comments

liliang8858 avatar Nov 20 '18 06:11 liliang8858

要分场景。如果是Go的切片内容传人C函数临时使用,C函数返回前是安全的。如果C函数返回后被其它C函数引用,那么因为GC可能导致Go内存被移动,因此这种C函数的引用是错误的。如果是调用C函数的malloc,那么就是传统C语言管理内存的模式。

chai2010 avatar Nov 20 '18 07:11 chai2010

如果 c函数返回 拷贝一份,还可以继续传入下个c函数用吗? @chai2010

liliang8858 avatar Nov 25 '18 00:11 liliang8858

如果是C语言分配的内存空间,任何时刻都可以再传给C函数使用

chai2010 avatar Feb 20 '19 01:02 chai2010

有可能被 go 给gc掉吗?

liliang8858 avatar Feb 25 '19 04:02 liliang8858

C分配的内存,gc不会释放。 Go自己分配的指针,好像都是有标记的。

chai2010 avatar Feb 25 '19 07:02 chai2010