簡體   English   中英

CGO我正在傳遞一個帶有指向go函數值的指針的C結構,

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM