我想知道我在哪里必须使用“免费”功能?
当我已经使用过“ 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);
先谢谢您!
答案 0 :(得分:1)
man page for free
指出以下内容:
free()函数释放ptr指向的内存空间 必须由先前对malloc(),calloc()或 realloc()。否则,或者如果之前已经调用过free(ptr), 发生未定义的行为。如果ptr为NULL,则不执行任何操作。
在您的第一种情况下,free
的使用无效,因为l
未初始化。第二种情况是有效的(假设liste
是指针的typedef),因为为l
分配了malloc
返回的地址。