1. 程式人生 > >利用動態記憶體分配建立一個二維陣列

利用動態記憶體分配建立一個二維陣列

剛剛學習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)