c - C 中 free() 的确切输出?

标签 c pointers free null-pointer

我想问,如果我有一个指向某个结构的指针,但是然后我 free(struct) 那么如果我取消引用该指针,它会指向 NULL 吗?如我可以检查,指针!= NULL 还是这是未定义的?

谢谢!

最佳答案

对指针调用 free() 不会更改指针值。它仍然会指向不再属于您的应用程序的同一内存。释放指针后,应立即将 NULL 分配给已释放的指针,以确保不会再次使用它。

void *p = malloc(10);    // p points to allocated memory
free(p);                 // p still points to invalid memory
p = NULL;                // good practice

关于c - C 中 free() 的确切输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11874832/

相关文章:

c++ - C/C++ 中的数值转换

c - C 中的(空)无限循环是否未定义行为?

c - 如何访问 C 中结构中索引处的元素?

c - 应为 ‘double *’,但参数的类型为 ‘double **’

c - 指针、列表和空值

C - 如何释放在其他函数中分配的内存?

c - 在 C 中将结构发送到线程

c - Ruby 的专有 C 扩展

c - 驯服 malloc/free 野兽——提示与技巧

c - 销毁结构(释放内存)