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 ...