陣列的動態記憶體分配

2021-09-12 11:30:22 字數 1600 閱讀 6342

1.已知陣列的第二維進行動態記憶體分配

方式:利用陣列指標

#include

using

namespace std;

intmain

(int argc,

char

*ar**)

}delete

p;//釋放記憶體

return0;

}

2.1已知陣列的第一維進行動態記憶體分配

方式:利用指標陣列

#include

using

namespace std;

intmain

(int argc,

char

*ar**)

//賦值

for(

int i=

0;i//釋放記憶體

for(

int i=

0;i)return0;

}

2.2已知第一維一次性進行記憶體分配

方式:利用指標陣列

#include

using

namespace std;

intmain

(int argc,

char

*ar**)

//賦值

for(

int i=

0;i//釋放記憶體

delete

p[0]

;return0;

}

3.1第一維第二維都未知動態分配記憶體

方式:雙層指標,每乙個元素指向乙個指標陣列

#include

using

namespace std;

intmain

(int argc,

char

*ar**)

//賦值

for(

int i=

0;i//釋放記憶體

for(

int i=

0;i)delete

p;return0;

}

#include

using

namespace std;

intmain

(int argc,

char

*ar**)

//賦值

for(

int i=

0;i//釋放記憶體

delete

p[0]

;delete

p;return0;

}

總結起來,只有第二維已知時,只需要乙個指標(陣列指標)就可以,這時直接令該陣列指標(指向陣列的指標)指向乙個匿名的二維陣列記憶體區(的首位址);只有第一維已知時,則需要乙個指標陣列(存放指標的陣列),令該指標陣列每個元素指向陣列的每一行;兩維都未知時,需要建立乙個雙層指標,該指標指向乙個指標陣列,再令所指向的指標陣列中每乙個元素指向二維陣列的每一行。

如果要使指標陣列中所有元素直接一次性指向陣列記憶體區時,需要令該指標陣列的首位址直接指向該二維陣列記憶體區的首位址。可以這樣做是因為二維陣列的儲存方式。

陣列的動態記憶體分配(new delete)

假設我們要為乙個字元陣列 乙個有 20 個字元的字串 分配記憶體,我們可以使用上面例項中的語法來為陣列動態地分配記憶體,如下所示 char pvalue null 初始化為 null 的指標 pvalue newchar 20 為變數請求記憶體要刪除我們剛才建立的陣列,語句如下 delete pva...

動態記憶體分配

在c 中建立乙個物件時,我們必須要為這個物件申請一塊記憶體,而且要用建構函式對這塊記憶體進行初始化。c 中的new和delete相對於c的庫函式malloc和free在這方面有很大的優勢,所以我們主要講的是運算子new和delete。當用new來建立乙個物件時,它會自動在堆裡為物件分配記憶體並且為這...

動態記憶體分配

為什麼使用動態記憶體分配?c語言中的一切操作都是基於記憶體的 變數和陣列都是記憶體的別名,如何分配這些記憶體由編譯器在編譯期間決定 定義陣列的時候必須指定陣列唱的 而陣列長度是在編譯期就必須決定的 需求 程式執行的過程中,可能需要使用一些額外的記憶體空間 malloc和free malloc和fre...