2017-12-26 30 views
-3

私はGoを学び始めました。私が情報を見つけることができないものが見つかりました。goでメモリを解放するには?

例えば、私は自分のリスト構造

type elem struct { 
    prev *elem 
    next *elem 
    value string 
} 

作っていた場合、どのようにそれらを削除する必要があり

Current.next = &elem{} 

でそれに新しい要素を追加しますか?つまり、リストからだけでなく、メモリからelemのデータを削除するにはどうすればいいですか?

+4

ゴーはガベージコレクションされています。あなたはあなたのデータ構造からそれらを削除する以外の何もしません。 – JimB

+0

@JimBは、ガベージコレクタがメモリ内のこのデータをガーベジとして認識するとき、あなたはいつ解読できますか? (それを得なかった)良い説明のために – CrazyWu

答えて

5

ガーベッジコレクションがあります。それは、ポインタを持たないデータをスキャンし、ヒープから削除します(ガベージコレクタはプログラムの横にあります)。あなたがすべき唯一のものがある:

Current.next = null 

あなたelem{}は(それは確定的ではありませんelem{}がリリースされる際に正確に伝えることはできません。)あなたがそれにすべてのポインタを削除し、最終的に後にメモリから削除されます。ガベージコレクションにはさまざまな実装があります。 Goの実装はいつでも変更される可能性があります。

Currentが範囲外になる場合は、nextからnullに設定する必要はありません。

+0

ありがとう – CrazyWu

+0

@CrazyWuあなたの歓迎:) –

関連する問題