原型 :extern void *realloc(void *mem_address, unsigned int newsize);
我们一般的用法是:
char *p;
p = (char * ) malloc (10);
if(!p) return ERROR;
//realloc
p = (char * ) realloc (p,20); //ERROR
if(!p) return ERROR;
错误就在 realloc, 如果realloc分配失败,原来申请的10个字节将无法释放,导致内存泄漏;
正确的写法是:
char *p, *q;
p = (char * ) malloc (10);
if(!p) return ERROR;
//realloc
q = p;//先保存P
p = (char * ) realloc (p,20); //ERROR
if(!p) {
free(q);
return ERROR;
}