free问题2
void clear(PSTACK pS)
{
if ( empty(pS) )
{
return;
}
else
{
PNODE p = pS->pTop;
PNODE q = NULL;
while (p != pS->pBottom)
{
q = p->pNext;
free(p);
p = q;
}
pS->pTop = pS->pBottom;
}
}
这是我的清空栈的子函数,上次我问了free掉之后要给free的指针赋空值,这儿也需要给p赋空值吗?还是不能完全掌握。
[解决办法]
不需要,p只是个局部变量,离开函数它自动被释放掉,而且最后你要释放的节点已经都释放完了。
[解决办法]
记得给生命周期还未结束的指针赋值为NULL是一种良好的习惯。这里的p已经到函数的末尾了,所以赋值不赋值都不会影响程序的运行的 了
[解决办法]
可以不赋值为NULL,不过为防止再次使用已经free后的指针出现不表要的错误,将指针赋值NULL可以很快的得到错误。
[解决办法]
无malloc,无free
无new,无delete
无生,无死
(^_^)
[解决办法]
我的建议还是不要养成太多习惯,多赋值一次,就慢一点,C语言的优势就少一点,在确定不需要赋值的情况下就果断地不去赋值。