動態陣列可以有兩種使用方式:
1:不能預先知道陣列的大小使用動態陣列
傳統陣列(靜態陣列)是需要在程式執行前,就指定大小,比如說
int i = 10;
int a[i];
這種就是不合法的。
因為函式棧的要求,就是在函式執行前,分配好所有變數的空間,i是不定的,所以不能再執行前,就分配好空間。
但是大多數情況,我們並不能預先知道陣列的大小的。
所以我們使用動態陣列
int *a = new int[i];
這個語句就可以在執行的時候,才分配空間,是合法的。
2:大陣列儲存時棧區是有大小限制
傳統陣列是存放在棧區的,棧區是有大小限制的,如果你申請了乙個大於2m的陣列,程式就會報錯……
但是動態陣列是在堆空間的,理論上,記憶體有多大,就可以申請多大的陣列。
在vc中棧預設是1m;有時建立乙個a[1000000000]甚至更長的陣列時棧會不夠用,與此同時,即使陣列不是太大,例如a[1000000],一次申請連續的陣列會造成資源的浪費,並且可能因為很多因素記憶體的分配不能進行,而得不到記憶體。所以動態陣列可以最大的限度節省記憶體空間。
一維動態陣列的建立和刪除
int *p = 0;
p = new int[10];//建立
delete p;
二維動態陣列的建立和刪除,以建立乙個二維矩陣為例
double **data =0;//定義乙個二維的指標
data = new double *[rsize]; //建立矩陣的行
for (int i = 0; i < rsize; i++)
for (int i = 0; i < rsize; i++)
for (int j = 0; j < csize; j++)
data[i][j] = 0; //初始化
/*****二維動態陣列刪除****/
for (int i = 0; i < y; ++i)
delete p;
p = null;
new出來的陣列它的邏輯位址(虛擬位址)是連續的,所以可以用遍歷來讀取,但實體地址是不一定的(因為要大陣列儲存,這個是作業系統的事情,使用者不用關心)。 C 動態建立和刪除二維陣列
1.a ga n new a m n delete ga 缺點 n必須是已知 優點 呼叫直觀,連續儲存,程式簡潔 經過測試,析構函式能正確呼叫 2.a ga new a m for int i 0 i m i ga i new a n for int i 0 i m i delete ga i de...
WPF 中動態建立和刪除控制項
動態建立控制項 1.容器控制項.registername name 要註冊的控制項 註冊控制項 2.容器控制項.findname name as 控制項型別 找到控制項並轉換成相應型別 注意 僅通過 控制項.name來設定是不能通過findname來找到控制項的,必須註冊 動態刪除控制項 1.容器控...
C 物件的動態建立和釋放
使用類名定義的物件 請檢視 c 類的宣告和物件的定義 都是靜態的,在程式執行過程中,物件所佔的空間是不能隨時釋放的。但有時人們希望在需要用到物件時才建立物件,在不需要用該物件時就撤銷它,釋放它所佔的記憶體空間以供別的資料使用。這樣可提高記憶體空間的利用率。在c 中,可以使用new運算子動態地分配記憶...