免费功能的使用

时间:2019-02-24 23:52:59

标签: c pointers linked-list

我想知道我在哪里必须使用“免费”功能?

当我已经使用过“ malloc”函数还是将其与任何已声明的指针一起使用时,我会使用它吗?

注意:在两种情况下,liste类型的定义如下:

typedef struct Node * liste; 

Node也是一种结构:

struct Node { 
    int value; 
    Node *N;
};

第一种情况

liste l; 
free (l);

第二种情况

liste l;
l=(node*)malloc(sizeof(node));
free (l);

先谢谢您!

1 个答案:

答案 0 :(得分:1)

man page for free指出以下内容:

  

free()函数释放ptr指向的内存空间   必须由先前对malloc(),calloc()或   realloc()。否则,或者如果之前已经调用过free(ptr),   发生未定义的行为。如果ptr为NULL,则不执行任何操作。

在您的第一种情况下,free的使用无效,因为l未初始化。第二种情况是有效的(假设liste是指针的typedef),因为为l分配了malloc返回的地址。