我敢肯定它没有,但也许其中有黑魔法,所以这是我的问题:
如果我有这样的结构:
struct mystr {
char * strp,
unsigned int foo,
};
我为它分配了内存,想稍后释放它。我必须做吗
free(mystr_var->strp);
free(mystr_var);
或者最后一行是否足够,free()
函数是否跟随指针并释放它们两个?
最佳答案
不,free 不遵循指针,您需要这两行。
我通常写这样的函数:
void freemystr(mystr *mystr_var)
{
if (mystr_var)
{
free(mystr_var->strp);
mystr_var->strp = NULL;
free(mystr_var);
}
}
关于c - free() 是否遵循指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13877546/