C的動態記憶體配置malloc指令,以及釋放記憶體free指令運用【malloc】-stdlib.h

關於malloc所配置的記憶體空間,經過配置後是不會自己釋放消失的,
所以要配合free指令去將其所佔用記憶體釋放。
#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;}
int* vn=malloc(sizeof(int)*(length+1));//每執行一次malloc配置比前一次配置的陣列大一個int空間
for(int i=0;i<length;++i){
vn[i]=v[i];//將指標陣列"v"的儲存內容(malloc配置陣列的位址)複製到指標陣列"vn"
}
free(v);//釋放指標陣列"v"記憶體空間
v=vn;//把"vn"的儲存內容複製到陣列指標陣列"v",//指標是彈性的~沒有空間限制
v[length]=input;//將此次輸入的數值存入陣列最後一個空間位置
++length;//每次增加給下一輪使用(malloc配置陣列空間參數與象徵陣列大小)
}
for(int i=0;i<length;++i){
printf("%d ",v[i]);
}
return 0;
}

留言