[英]CGO I am passing a C struct with a pointer to a value to a go function,
我是否在以下情況下需要清理內存感到困惑?
我有一個C函數,它創建一個C結構並將其傳遞給Go函數。 C結構包含一個值數組(使用指針算法)。 Go函數填充此數組並返回。 在調用C函數中,我將值從C結構中復制出來,並且不存儲它們。
在Go中創建時,是否收集了垃圾?
/*
C code
*/
int go_func(c_struct *s);
struct c_struct{
val *values;
size_t *values_cnt;
};
void example_call()
{
struct c_struct s;
go_func(&s)
copy_values(s)
}
/*
go code
*/
func go_func(c *C.c_struct){
var varr *C.val
var v C.val = createValues()
C.set_val_in_array(varr, *v, C.size_t(0))
c.values = varr
}
是的,因為在Go中創建內存時,肯定會在Go中收集垃圾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.