C free()函数的用法

C free()函数的用法,c,pointers,C,Pointers,假设我有一个带有head指针的链表节点,我将head传递给其他函数 相似测试(节点*np) 如果我在这个函数测试中释放np,头可能指向节点,也可能不指向节点,会发生什么情况?根据C标准,使用free和不正确的指针是未定义的行为: 7.22.3.3免费功能

假设我有一个带有head指针的链表节点,我将head传递给其他函数 相似测试(节点*np)


如果我在这个函数测试中释放np,头可能指向节点,也可能不指向节点,会发生什么情况?

根据C标准,使用
free
和不正确的指针是未定义的行为:

7.22.3.3
免费
功能

功能导致
ptr
指向的空间被释放,即生成 可供进一步分配。如果
ptr
是空指针,则不会发生任何操作。否则,如果 参数与内存管理系统先前返回的指针不匹配 函数,或者如果通过调用
free
realloc
释放空间,则 行为是未定义的


我创建了head by(node*)malloc(sizeof(node)),其中node是struct linkedlistnode的一个typedef。所以你说的是为了删除这个节点,我只能用free(head)来做,但不能用free(np)来做,即使np和head指向同一个节点,不是吗?@sarat No,如果
np==head
那么
free(np)
free(head)
都是相同的。