2016-10-25 7 views
-8
for(unsigned int i = 0; i < max; i++) { 
    auto curr = new LinkedListNode(ptr1, ptr2, nullptr); 
} 

、これはループを通してそれを入れていないのと同じ結果と同様にをC++で作成し、新しいコンストラクタを作成します。 forループに入れるとどうしますか?私は推測してい

auto curr = new LinkedListNode(ptr1, ptr2, nullptr); 

を行うことと同じになります。

どう違うのですか?

+5

forループに入れると、何度も実行されます。あなたがやっていることは、メモリのリークを終了させるでしょう。 1のために、メモリの1つのインスタンス価値 - – grigor

+2

http://stackoverflow.com/documentation/c%2b%2b/589/loops/1945/for-loop#t=201610252343440121388 –

+0

あなたのループは、おそらく最大の漏れています。 (あなたのコンストラクタがどこかでポインタを格納するような、 "背後で"面白い "何かをしていない限り) –

答えて

0

彼らはどのように異なっている??

彼らはforループ内のコードがmaxLinkedListNodeの数、そして後者は、単一のLinkedListNodeを行います作るという意味で異なっています。

あなたはsee this in actionをすることができます。 LinkedListNodeに対してコンストラクタが何回呼び出されたかを確認しますが、デストラクタは決して呼び出されません。

あなたforループは無用です。メモリをリークする以外は何もしません。メモリを手動で管理していなくても、ループはcurrが範囲外になってから後でアクセスできないオブジェクトの束を作成するだけです。

+0

素晴らしい。まさに私が考えていたものです。私は確認が必要でした:D – justCurious

関連する問題