c - 为什么我可以在一个方法中传递一个指针和 "free"里面的内存?

标签 c pointers free

我一直读到,为了修改 C 函数中的任何变量,您必须传递指向该变量的指针。

如果我想删除链表中的一个特定元素,我会这样做:

int DeleteElement(element **head, element *deleteMe)
{
  free(deleteMe);
  return 1;
}

为什么我可以释放 deleteMe 并在 DeleteElement 函数之外反射(reflect)出来? deleteMe 不是函数内部的另一个东西吗?

谢谢

最佳答案

您没有向指针 deleteMe 写入任何内容。您正在使用它(以只读方式)来确定要释放的对象(它指向的对象)。

关于c - 为什么我可以在一个方法中传递一个指针和 "free"里面的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14425512/

相关文章:

c - 确定值是否严格按升序排列的链表函数

以下需要解释的 C 指针输出

c - 如何警告指向超出范围的局部变量的指针

c - 在 C 指针中反转字符串?

c - MPI、调用和释放 :

c - 如何打印树节点 void 指针指向的该结构的成员?

c - 错误 : lvalue required as left operand of assignment in a swap with pointers

c - 在 C 程序和 shell 脚本之间共享头文件

delphi - 在调用FreeMem(Delphi 32)之前检查是否已分配内存

c - 在c中得到 "free(): invalid pointer"