用法:#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
c语言中malloc函数和realloc函数的区别为:分配不同、释放不同、强制转化不同。
一、分配不同
1、malloc函数:malloc函数对没有分配过的内存块直接进行分配。
2、realloc函数:realloc函数是在已经分配好的内存块重新进行分配。
二、释放不同
1、malloc函数:malloc函数分配好的内存块一般要用free(size_t size)来释放内存块。
2、realloc函数:realloc函数分配好的内存块不需要用free(size_t size)来释放内存块。
三、强制转化不同
1、malloc函数:malloc函数需要强制转化。
2、realloc函数:realloc函数不需要强制转化。