void main()
{
char * p = (char *)malloc(100); p = (char *)realloc(p,200); if ( ! p)
{
return; //如果分配失败了,p原先malloc的内存是否会被释放掉呢??这个时候如果返回,会不会导致内存泄漏。
}
if(p)
{
free(p);
p = NULL;
}
return;
}
{
char * p = (char *)malloc(100); p = (char *)realloc(p,200); if ( ! p)
{
return; //如果分配失败了,p原先malloc的内存是否会被释放掉呢??这个时候如果返回,会不会导致内存泄漏。
}
if(p)
{
free(p);
p = NULL;
}
return;
}
所以你的程序得改改
改成这样void main (void)
{
char *p = (char *)malloc (100);
char *p2 = (char *)realloc (p, 200);
if (!p2)
{
// 释放掉原来的p
free (p);
return;
} free (p2);
p = NULL;
return;
};