C C 動態二維陣列的記憶體分配和釋放

2021-07-01 18:53:04 字數 2663 閱讀 8882

c語言

[cpp]view plain

copy

//二維陣列動態陣列分配和釋放

//陣列指標的記憶體分配和釋放

//方法一

char

(*a)[n];

//指向陣列的指標

a = (char

(*)[n])malloc(

sizeof

(char

[n]) * m);  

free(a);   

//方法二

char

**a;  

inti;  

a = (char

**)malloc(

sizeof

(char

*) * m);

//分配指標陣列

for(i=0; i

a[i] = (char

*)malloc(

sizeof

(char

) * n);

//分配每個指標所指向的陣列

for(i=0; i

free(a[i]);  

free(a);   

//方法三

char

**a;  

inti;  

a = (char

**)malloc(

sizeof

(char

*) * m);

//分配指標陣列

a[0] = (char

*)malloc(

sizeof

(char

) * m * n);

//一次性分配所有空間

for(i=1; i

a[i] = a[i-1] + n;  

free(a[0]);  

free(a);   

//指標陣列的記憶體分配和釋放

//方法一

char

* a[m];

//指標的陣列

inti;  

for(i=0; i

a[i] = (char

*)malloc(

sizeof

(char

) * n);  

for(i=0; i

free(a[i]);   

//方法二

char

* a[m];

//指標的陣列

inti;  

a[0] = (char

*)malloc(

sizeof

(char

) * m * n);  

for(i=1; i

a[i] = a[i-1] + n;  

free(a[0]);   

c++

[cpp]view plain

copy

//二維陣列動態陣列分配和釋放

//陣列指標的記憶體分配和釋放

//方法一

char

(*a)[n];

//指向陣列的指標

a = new

char

[m][n];  

delete

a;   

//方法二

char

**a;  

a = new

char

* [m];

//分配指標陣列

for(

inti=0; i

a[i] = new

char

[n];

//分配每個指標所指向的陣列

for(i=0; i

delete

a[i];  

delete

a;   

//指標陣列的記憶體分配和釋放

//方法一

char

**a;  

a = new

char

* [m];  

a[0] = new

char

[m * n];

//一次性分配所有空間

for(

inti=1; i

a[i] = a[i-1] + n;//分配每個指標所指向的陣列

delete

a[0];  

delete

a;   

//方法二

char

* a[m];

//指標的陣列

for(

inti=0; i

a[i] = new

char

[n];  

for(i=0; i

delete

a[i];   

//方法三

char

* a[m];

//指標的陣列

a[0] = new

char

[m*n];  

for(

inti=1; i

a[i] = a[i-1] + n;  

delete

a[0];   

注意:

new和delete要注意配對使用,即有多少個new就有多少個delete,這樣才可以避免記憶體洩漏!

二維陣列動態分配記憶體

在robert sedgewick所著的algorithm in c中,把二維陣列當成陣列的陣列為它動態分配記憶體。首先,分配乙個指標的陣列,然後為每一行分配記憶體。函式定義 void malloc2d int r,int c,int size void free2d void arr,int r ...

二維陣列動態分配記憶體

對二維陣列分配動態空間 1.已知二維陣列的行 第一維 include include 已知陣列的行數 列數由終端輸入 int main void int i,j,num int a 3 已知陣列有3行 printf 請輸入二位陣列的列數 n scanf d num 列數由終端輸入 for i 0 i...

二維陣列動態分配記憶體

c 二維陣列動態分配和釋放 1 已知第二維 code 1 char a n 指向陣列的指標 a char n malloc sizeof char m printf d n sizeof a 4,指標 printf d n sizeof a 0 n,一維陣列 free a 2 已知第一維 code ...