動態記憶體配置 - C/C++

文章推薦指數: 80 %
投票人數:10人

m = new int[1000]; //配置1000個整數的記憶空間給指標變數m,m即為一個陣列. 一旦不再需要這個動態配置的陣列,我們還可以把記憶體釋放出來,以便讓程式有更大的記憶 ... 計算機概論:C/C++程式設計   第5章、陣列和指標     授課教師:陳慶瀚 WWW :http://www.miat.ee.isu.edu.tw/cpp E-mail:[email protected]     5.6動態記憶體配置(Dynamical MemoryAllocation) 想像一下,如果我們想寫一個計算25筆資料的平均值的程式,我們一定會宣告一個大小為25的陣列,如   float data[25]; 接著使用這個陣列來存放和處理資料。

但如果下一次要計算的資料是26筆或100筆,我們就需要修改程式,將陣列大小改為26或100,再重新編譯、執行。

如此一來,這個程式就毫無彈性可言,因為任何想要使用這個程式的人都必須修改原始碼、重新編譯、才能正確執行它的需求。

比較彈性的處理方法是:程式撰寫的時候不設定陣列的大小,而在執行時才以動態的方式指定、配置和使用這個陣列,例如讓使用者由鍵盤輸入它所需要的陣列大小,這時才決定配置所需的記憶體。

如此則每次處理不同的資料就不需重新編譯了。

這種做法稱為動態記憶體配置(DynamicalMemoryAllocation),我們先宣告一個指標變數,再藉由C++所提供的動態記憶體配置運算子new來執行動態記憶體配置, 指標變數=new指標的變數型別[記憶體大小]; 例如 int*m;             //宣告一個指標變數m m=new int[1000];//配置1000個整數的記憶空間給指標變數m,m即為一個陣列 一旦不再需要這個動態配置的陣列,我們還可以把記憶體釋放出來,以便讓程式有更大的記憶空間做其他用途。

釋放記憶體的方法是使用C++所提供的釋放記憶體運算子,語法很簡單: delete指標變數; 例如 deletem; 就會把前面m所配置的記憶體釋放出來。

m又回復成為原先的指標變數,因此還可以再度配置不同的記憶空間給m,以便因應不同陣列大小的需求。

在程式執行過程中,一個指標可以被反覆的配置、釋放動態記憶體任意次。

  /*----------------------------------------------------*/ //                 範例程式5-11 //                 動態記憶體配置 //                 陳慶瀚,2001 /*----------------------------------------------------*/ #include void main(void) {      int *p;        //宣告一個整數的指標p      p =newint[3];//配置記憶體給p,使p成為一個整數陣列      if(p==0) //配置記憶體失敗      {          return;      }      p[0] =20;      p[1] =30;      p[2] =40;      int i;      for(i=0;i<3;i++)cout <

#include   void main(void) {   int*m;        //宣告一個整數的指標m   inti,j,num;   for(i=0;i<25;i++)   {      num=random(80); //亂數產生陣列大小num      m=newint[num];//配置記憶體給m      for(j=0;j>name; 課堂練習TD5-10: 寫一個程式,讓使用者輸入一個整數N後,動態配置大小為N的整數陣列data,再由使用者輸入N個陣列值,求其平均值輸出。

提示:    cin>>N;    int *data;    data=new int[N];    cout<>data[i];    }   計算機概論:C/C++程式設計 義守大學電機系陳慶瀚  2001.11.12  



請為這篇文章評分?