2017-09-17 9 views
-4

リンクリストにノードを定義したとき、私はこの混乱を経験しました。 を検討し、ここ構造メモリ割り当てとmalloc()in c

struct node *current = head; 

headは、ノードを先頭へのポインタです。別の方法は、

struct node *current = (struct node*)malloc(Sizeof(struct node)); 
current = head; 

どちらも同じですが、違いは何ですか? 最初のケースではどのようにメモリが割り当てられますか?

+1

んが、メモリは最初のケースに割り当てられていません。 2番目のケースで割り当てられたメモリがリークします。あなたは_pointer_とは何かを学ぶべきです。 – myaut

+0

次に、最初のケースで何が起こりますか? –

+0

[mcve]を作成するか、少なくとも "head"の宣言/定義/初期化を表示してください。 – Yunnosch

答えて

3

2番目のバージョンではmalloc(sizeof(struct node))がコールされ、返されたポインタは失われます。つまり、メモリリークです。あなたは行って、同じ効果を得ることができます。

malloc(sizeof(struct node)); 
struct node *current = head; 
関連する問題