C的動態記憶體配置realloc指令(記憶體另配置,舊位置自動釋放或原位置擴充)【realloc】-stdlib.h

#include<stdio.h>
#include<stdlib.h>
int main(){
int *v=0;//0=空指標=(NULL)若無給予指標位址,是一個未定義行為
int length=0;//
printf("please enter integers\n");
while(1){
int input;
scanf("%d",&input);
if(input==0){break;}
v=realloc(v,sizeof(int)*(length+1));
每執行一次realloc配置比前一次配置的陣列大一個int空間,若當下該陣列後面的記憶體位置沒有使用,會原地擴充,若有會另外配置所需空間,將資料搬移過去後,原來位置空間釋放。
v[length]=input;//將此次輸入的數值存入陣列最後一個空間位置
++length;//每次增加給下一輪使用(realloc配置陣列空間參數與象徵陣列大小)
}
for(int i=0;i<length;++i){
printf("%d ",v[i]);
}
return 0;
}

留言