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