高手教教我 free的问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 18:52:48
为什么我的这个函数 不能释放所申请的空间呢? 如何才能释放?
void foobar(int i)
{
char *p = (char*)malloc(12);
if(i)
p = NULL;
free(p);
return;
}

if(i)
p = NULL;
free(p);
你的p在i>0的时候被赋值为null
它就不能指向申请的空间地址了,当然free(p)就没用了
应该先free(p),然后为p=null

p = NULL;
free(p);
问题很明显你把p指针重新赋值为NULL, 并没有指向你分配的空间
你应该
if(i)
p = NULL;
else
free(p);
这样才会安全啊,加入i=0, 那么你的p=NULL 试问free怎么 释放p呢