zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

C语言中多维数组的内存分配和释放(malloc与free)的方法

内存C语言方法数组 释放 分配 free 多维
2023-06-13 09:14:53 时间

如果要给二维数组(m*n)分配空间,代码可以写成下面:

复制代码代码如下:

char**a,i;

//先分配m个指针单元,注意是指针单元

//所以每个单元的大小是sizeof(char*)

a=(char**)malloc(m*sizeof(char*));

//再分配n个字符单元,

//上面的m个指针单元指向这n个字符单元首地址

for(i=0;i<m;i++)

a[i]=(char*)malloc(n*sizeof(char));

释放应该是:

复制代码代码如下:

inti;

for(i=0;i<m;i++)

   free((void*)a[i]);

free((void*)a);

如果为三维数组(m*n*p)分配空间呢,应该是:

复制代码代码如下:
char***a,i,j;

a=(char***)malloc(m*sizeof(char**));

for(i=0;i<m;++i)

   a[i]=(char**)malloc(n*sizeof(char*));

for(i=0;i<m;++i)

for(j=0;j<n;++j)

   a[i][j]=(char*)malloc(p*sizeof(char));

释放代码为逆过程,具体代码为:

复制代码代码如下:
inti,j,;

for(i=0;i<m;++i)

for(j=0;j<n;++j)

       free((void*)a[i][j]);  

for(i=0;i<m;++i)

   free((void*)a[i]);

free((void*)a);


三维以上的多维数组的分配和释放,原理与上面的一样。