指针赋值为NULL:如果使用malloc则有区别吗?

Joh*_*ith 1 c memory malloc pointers

以下是两个不同的版本:

Node *pointer = (Node*)malloc(sizeof(Node));
pointer = NULL;
Run Code Online (Sandbox Code Playgroud)

.

Node *pointer = NULL;
Run Code Online (Sandbox Code Playgroud)

我问的原因是因为我在这个代码中到处看到第一个版本我正在研究,但我认为它与第二个版本相同.有时而不是被分配给NULL它被分配给另一个变量,但原理是相同的,不是吗?

Joh*_*136 7

他们是非常不同的.在第一种情况下,您Node在堆上创建一个然后直接"忘记"它,导致内存泄漏.第二种情况不会造成Node泄漏.

如果您在代码中到处都看到第一个版本,我会非常担心!