原型
用于改变原分配的内存大小,先判断当前的指针是否有足够的连续空间,如果有,扩大mem_address指向的地址,并且将mem_address返回,如果空间不够,先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域(注意:原来指针是自动释放,不需要使用free),同时返回新分配的内存区域的首地址。即重新分配存储器块的地址。
1 2 3 4 5 6 7 8 9 10
|
void *realloc(void *ptr, size_t size);
|
使用参考
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #include<stdio.h> #include<stdlib.h>
int main() { int i; int *pn=(int *)malloc(5*sizeof(int)); printf("%p\n",pn);
for(i=0; i<5; i++){ scanf("%d",&pn[i]); }
pn=(int *)realloc(pn, 10*sizeof(int)); printf("%p\n",pn);
for(i=0;i<5;i++){ printf("%3d",pn[i]); }
printf("\n"); free(pn);
return 0; }
|