2010-02-22 117 views
5

與數組中元素的普通分配相比,使用動態內存分配創建數組有什麼優勢?動態內存分配

+3

聽起來像功課嗎? – 2010-02-22 15:58:23

+0

在某些平臺上,動態內存區域比本地(或自動)存儲區域大得多。通常而言,*堆*可能允許比* stack *或* application local *存儲更大的存儲空間。 – 2010-02-22 18:33:43

回答

3

1)動態存儲器分配允許大量自由的,當涉及到管理對象的生命週期。

2)數組的大小也可以更自由地控制。

9

您不必事先知道數組的大小,或者過度分配內存來計算大型數組。這使您的程序在使用內存時更加高效。

4

動態創建的數組通常可以比自動創建的數組大,並且可以具有更長的生命週期。但是與使用std :: vector相比,兩者都有很多缺點。

2

int x[100];是固定的大小,你不能展開。它的生命週期與創建它的環境有關,並且不能通過不同的功能/方法傳遞。

int *x = new int[n]; ... delete[] x;可以重新分配,因此它可以調整大小,並且在編譯時不需要知道n(因此您可以詢問用戶需要多少個數字並創建該大小的數組)。正如@Neil Butterworth所指出的那樣,這是在堆上創建數組,並且可以是更大的尺寸,而靜態變量則是在堆棧上創建數組。

std::vector包裝了很多這個魔術重新分配代碼,可能這是你應該在你的代碼中使用。

0

動態分配的數組的基本優點是,可以判斷在運行時動態分配的數組的大小,而且,由於該陣列是在堆上而不是堆,它可以比靜態較大陣列。儘管如此,記住這一點非常重要,std :: vector可以爲你工作。你應該在哪些場合展示你自己的數組類是少之又少的。當你分配數組則數組的大小在編譯時給予使用std ::載體,

0

。在那種情況下,大多數情況下,無論是分配更多內存還是分配更少內存。

這是動態分配內存可以幫助你,讓你可以實際分配僅是真正需要這些內存塊,並,當你與內存管理做,你可以釋放內存。

0

簡而言之,它有助於程序員創建用戶所說的大小數組。