我确信不是,但也许其中有黑魔法,所以这是我的问题:
如果我有这样的结构:
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);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)