動態分配內存-realloc
阿新 • • 發佈:2018-09-18
scan include eal sizeof char tro 保留 span 動態分配內存
動態分配內存---relloc
關於 malloc 就不多說了,現在看看 realloc:
函數聲明: void *realloc(void *ptr, size_t size);
功能:動態改變指針指向的內存塊的大小。
使用:如果 ptr 指針是空指針,該函數的作用同 malloc;
如果 size 的大小小於之前 malloc或 realloc 分配的大小,那麽原來內存塊的數據會丟失,只保留現有數據;
如果 size 的大小大於之前 malloc或 realloc 分配的大小,那麽將會分配一塊新的大小的內存塊。
新的內存塊將會復制原來內存塊的數據,原來的內存塊會被釋放。
DemoCode:
#include<stdio.h> #include<stdlib.h> int main(void) { int a,*p; int i=0,j=0; char b; p = (int *)malloc(sizeof(int)); printf("原來指針指向地址:%p\n",p); while(1) { scanf("%d%c",&a,&b); p[i] = a; if(b != ‘\n‘) { i++,j=i; p = (int *)realloc(p,sizeof(int)*(i+1)); } else break; } printf("新指針指向地址:%p\n",p); for(i=0;i<=j;i++) printf("%d\t",p[i]); printf("\n"); free(p); return 0; }
這樣就可以根據需要來使用內存了。
動態分配內存-realloc