2017-01-23 2 views
1

は、私はこのように、私の移動コードでCの構造体を作成します。私はCStringのを使用するときに私のようCgoで作成した構造体を解放する必要はありますか?

var data C.MyStruct_t 

私は、いくつかの点でそれらを手動で解放する必要がありますか?あなたが唯一のC *alloc機能を経由して割り当てられていた何かにfreeを呼び出す

ctitle := C.String(title) 
defer C.free(unsafe.Pointer(&ctitle)) 
C.my_func(&ctitle) 

答えて

3

番号:CStringので、私は多くの場合のように何かをします。 C.CStringC.CBytesの機能は、内部的にはC.freeの使用を必要とするものとして文書化されています。

この場合、dataは、タイプがC.MyStruct_tであるにもかかわらずGoに割り当てられているため、Goガーベッジコレクタによって処理されます。

関連する問題