原型:extern void *realloc(void *ptr, size_t newsize);
用法:#include <stdlib.h>
功能:改變ptr所指內存區域的大小為newsize長度。
說明:如果重新分配成功則返回指向被分配內存的指針,否則返回空指針NULL。
當內存不再使用時,應使用free()函數將內存塊釋放。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
char *p;
p = (char *)malloc(100);
if(p)
printf("Memory Allocated at:%p\n", p);
else
printf("Not Enough Memory!\n");
p = (char *)realloc(p, 256);
if(p)
printf("Memory Reallocated at:%p\n", p);
else
printf("Not Enough Memory!\n");
free(p);
return 0;
}
//==========================================================================
通常,realloc的用法會如下:
p = realloc(p, new_size);
if (p == NULL) {
return;
}
如果realloc()失敗,ptr指向的這塊內存不會變化,不會free或者移動。也就是說,如果realloc()失敗了,照着上面代碼的寫法,這塊內存就被永遠遺忘了。
tmp = realloc(p, new_size);
if (tmp == NULL) {
free(p);
return;
}
p = tmp;