利用動態記憶體分配建立一個二維陣列
阿新 • • 發佈:2019-01-01
剛剛學習C/C++的時候,這個問題一直困擾這我,但是隨著學習的深入,我漸漸掌握了相關的知識來解決這樣的問題,今天利用午休的時間寫了這篇博文,如有錯誤,希望可以給我留言,一起進步學習。
原始碼:
/* Author:Qinpeizhi Time:2015年6月12日12:29:11 Question:利用動態記憶體分配實現一個3*4二維陣列。 */ #include<iostream> using namespace std; int main(void) { int** p=NULL,i=0,j=0; p=new int*[3]; for(i=0;i<3;i++) { *(p+i)=new int[4]; for(j=0;j<4;j++) { *(*(p+i)+j)=j;//0,1,2,3 } } for(i=0;i<3;i++) { for(j=0;j<4;j++) { cout<<*(*(p+i)+j); } cout<<endl; } for(i=0;i<3;i++) { delete [] (p+i);//p+i 會報錯,因為p+i的地址並沒有被分配記憶體 } delete p; p=NULL; return 0; }
結構圖:
執行結果:
釋放記憶體時,p+i的錯誤,原因是p+i這塊記憶體並沒有用來被分配記憶體,用來被分配的是*(p+i),相關的執行結果:
這個錯誤是我在寫這個程式時所犯的一個錯誤,希望大家引以為戒。
執行環境:win8.1+ubuntu14.04(gcc version 4.8.2)