2009年4月24日 星期五

[C++ ][原創]使用new動態配置二維陣列

在以往C++語言的環境下,一般想要動態的配置一個二維的陣列,必須先配置出一個一維陣列的指標,再將每一小塊的陣列配給那個指標。

int** a = new int*[b];
for (int i=0;i++)
a[i] = new int[10];






for (int i=0;i++)
delete[] a[i];
delete[] a;

但是這樣的配置記憶體是不連續的,而且要刪除時也很麻煩,必須先把每一欄的記憶體刪除,在去刪除指標陣列,現在有個方法可以直接使用new來完成一次配置,當然,也可以一次把記憶體刪除,且記憶體是連續的方便管理。
int (*a)[10] = new int[b][10];

delete[] a;
根據C與C++的規範,宣告成空陣列時,Column一定要有值,也就是說必須讓編輯器知道要多大的記憶體塊,好讓你可以runtime的去配置記憶體,所以就可以宣告成指向固定記憶體塊{(*int)[10]}的指標,再用new去配置那塊記憶體即可,a這個值就會是一個二維陣列的位置,且可以動態的被配置出來,且刪除時也較方便。

沒有留言: