指针赋值为NULL:如果使用malloc,会有什么不同?

指针赋值为NULL:如果使用malloc,会有什么不同?,c,pointers,memory,malloc,C,Pointers,Memory,Malloc,以下是两个不同的版本: Node *pointer = (Node*)malloc(sizeof(Node)); pointer = NULL; 我问这个问题的原因是,在我正在编写的代码中,到处都可以看到第一个版本,但我认为它与第二个版本是一样的。有时,它不是被分配给NULL,而是被分配给另一个变量,但原理是一样的,不是吗?它们非常不同。在第一种情况下,您在堆上创建一个节点,然后立即“忘记”它,导致内存泄漏。第二种情况不创建节点,因此没有泄漏 如果你真的在你的代码中到处都看到第一个版本,我会

以下是两个不同的版本:

Node *pointer = (Node*)malloc(sizeof(Node));
pointer = NULL;


我问这个问题的原因是,在我正在编写的代码中,到处都可以看到第一个版本,但我认为它与第二个版本是一样的。有时,它不是被分配给NULL,而是被分配给另一个变量,但原理是一样的,不是吗?

它们非常不同。在第一种情况下,您在堆上创建一个
节点
,然后立即“忘记”它,导致内存泄漏。第二种情况不创建
节点
,因此没有泄漏


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

它们非常不同。在第一种情况下,您在堆上创建一个
节点
,然后立即“忘记”它,导致内存泄漏。第二种情况不创建
节点
,因此没有泄漏


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

不要在Cdon上强制转换malloc的结果不要在C上强制转换malloc的结果
Node *pointer = NULL;