1. 程式人生 > >關於C++的二維陣列的一個問題與解決

關於C++的二維陣列的一個問題與解決

最近在做一個專案,過程中new了一個二維陣列來儲存中間變數。因為這些變數用完後就沒有用了再加上陣列規模有點大,就想把它刪除釋放空間。

	double(*p1)[3 * length] = new double[number][3 * length];  

然而在刪除陣列過程中遇到了一些麻煩,這是原本所用的程式碼:

for (int i = 0; i < 3 * length; i++)
    {
        delete [] p1[i];
    }
delete [] p1;

結果是程式碼執行到這裡是總是出錯。

經過檢查,發現這段程式碼在i=0是能夠執行,但指標p1指向的空間會全部沒有了,之後再i=1時程式就會報錯。

之後將程式碼修改成下面這樣就能正確運行了。

//	for (int i = 0; i < 3 * length; i++)
//	{
//		delete [] p1[i];
//	}
	delete [] p1;

然而查閱了網上的眾多資料,這個是一維陣列的刪除方法,二維陣列的刪除方法就是出錯的那段。難道我new的實際上是一個一維陣列?但是我按二維陣列來使用並沒有出錯。奇怪,先記錄下來,等我水平再提高之後再探究一下。