Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
遵循断言不会失败,但根据我的理解它应该会失败。请纠正我。
#include <stdio.h> #include <assert.h> void custom_free(int **temp){ free(*temp); } int main(){ int *ptr = malloc(1024); custom_free(&ptr); assert(ptr); // doesn't fails ..why? }
调用free不会改变指针的值。如果你想NULL释放内存,你必须自己做
free
NULL
void custom_free(int **temp){ free(*temp); *temp = NULL; }
您不会“释放指针”,但可以释放指针引用的内存。这就是它的free作用:它不修改指针,它只对指针指向的东西做一些事情。
您的问题与free调用是否在函数中完成无关。尝试添加
*temp = 0;
在你free调用强制你得到一个空指针之后。