时间:2021-05-20
如果要给二维数组(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 ));
释放应该是:
复制代码 代码如下:
int i;
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 ));
释放代码为逆过程,具体代码为:
复制代码 代码如下:
int i,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);
三维以上的多维数组的分配和释放,原理与上面的一样。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言像C语言这样的底层语言一般都有底层的内存管理接口,比如malloc()和free()用于分配内存和释放内存。而对于JavaScript来说,会在创建变量(对
C语言中malloc、calloc、realloc的区别(1)C语言跟内存分配方式从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行
C语言free()函数:释放动态分配的内存空间头文件:#includefree()函数用来释放动态分配的内存空间,其原型为:voidfree(void*ptr)
free函数是我们再写C语言程序时常用的函数,但是使用时需要注意,一不小心很肯能会引起吐核。注意:free函数与malloc()函数配对使用,释放malloc函
详解C语言用malloc函数申请二维动态数组的实例C语言在程序运行中动态的申请及释放内存十分方便,一维数组的申请及释放比较简单。Sampleone#includ