2017-09-07 2 views
1

私は、この質問があなたがやっていることにはそれほど主観的ではないことを知っていますが、ノードクラスの生ポインタとスマートポインタの使い方に関する一般的なルールはありますか?スマートポインタまたは生ポインタを持つリンクリストのノード?

具体的には、ノードが無限の子を持つことができ、親が1つしかないリンクされたリストを持つ場合、スマートポインタまたは生ポインタを使用する方が良いでしょうか?

+0

ノードへのポインタのすべてのインスタンスをスマートポインタにする必要はないでしょうか?次のノードへの各ノードのポインタを含むでしょうか?オーバーヘッドのように思える。 – rcgldr

+0

そう...簡単にするためにrawを使うべきです。私がチェーンの一部を失った場合、メモリがリークされます。彼らは常にリストの一部によって指されるでしょう。 –

+0

リンクされたリストがどのように作成されるかによって異なります。プログラムによって使用されるすべてのリストに対して最大数のノードがある場合、ノードの配列の単一の割り当てを行うことができます。ノードのアレイは、ノードの割り当ておよびノー​​ドの割り当て解除に使用されるノードの単一の「フリープール」リストを形成するために一緒にリンクすることができる。プログラムが完了すると、リストの状態は重要ではありません。プログラムはノードの元の配列を解放します。 – rcgldr

答えて

1

今ではそれが生のポインタを進め01​​ユニークなポインタの二重リンクリストであれば、後方

共有ポインタの作品が、そのあまりの作品あなたがおよそ

を話しているリンクリストのどの種類によって異なります(それがします)野菜をカットするために剣を使用しても

優れたビデオCppCon 2016:ハーブサッター「Cにおけるリーク-自由++

https://youtu.be/JfmTagWcqoE?t=23m6s

関連する問題