1. 程式人生 > >C語言中動態內存的分配

C語言中動態內存的分配

成功 col 釋放內存 否則 turn stdlib.h color span 數組名

動態內存分配:根據需要隨時開辟,隨時釋放的內存分配方式。
分配時機和釋放時機完全由程序員決定,由於沒有數據聲明,這部分空間沒有名字。
無法像使用變量或數組那樣通過變量名或數組名引用其中的數據,只能通過指針變量來訪問。
註意malloc與free一般都是成對出現的只要成功申請的空間使用完後必須要釋放,否則會造成內存的泄露。

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int sum(int *,int);///函數的聲明
 4 int mian()
 5 {
 6     int n,s,i,*p;
 7     scanf("
%d",&n); 8 p=(int *)malloc(n*sizeof(int));///malloc的返回值是void*,與p類型不一致需要強制轉換,若不則自動但是會受到警告 9 if(p==NULL)///動態內存分配失敗 10 exit(1);///停止程序的運行 11 for(i=0;i<=n-1;i++) 12 scanf("%d",p+1);///指針變量的輸入 13 s=sum(p,n);///調用函數傳指針變量 14 printf("%d\n",s); 15 free(p);///釋放內存中由malloc()函數分配的空間
16 return 0; 17 } 18 int sum(int *p,int n) 19 { 20 int i,s=0; 21 for(i=0;i<=n-1;i++) 22 s=s+(*p++); 23 return s; 24 }

C語言中動態內存的分配