2017-09-17 6 views
-4

링크 된 목록에 노드를 정의 할 때 나는이 혼란을 겪었습니다. 는 head 노드를 머리에 포인터 여기,구조체 메모리 할당과 malloc() in c

struct node *current = head; 

을 고려하십시오. 다른 방법은 다음과 같습니다.

둘 다 동일하므로 어떤 차이가 있습니까? 첫 번째 경우에 메모리가 어떻게 할당됩니까?

+1

첫 번째 경우에는 메모리가 할당되지 않습니다. 두 번째 경우에 할당 된 메모리가 누수됩니다. _pointer_가 무엇인지 배워야하고 _assign 할 때 무엇이 ​​필요한지 배워야합니다. – myaut

+0

그러면 현재 상황은 무엇입니까? –

+0

[mcve]를 작성하거나 적어도 "head"의 선언/정의/초기화를 보여주십시오. – Yunnosch

답변

3

두 번째 버전은 malloc(sizeof(struct node))을 호출하고 반환 된 포인터를 잃어 버리는 점이 다릅니다. 즉 메모리 누수입니다. 다음을 수행하여 동일한 효과를 얻을 수 있습니다.

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