C语言中多维数组的内存分配和释放(malloc与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);
三维以上的多维数组的分配和释放,原理与上面的一样。
相关文章
- C语言typedef创建变量/指针别名 | 使用结构体指针节省内存
- jvm之虚拟机内存的各个区域(一)
- JVM内存架构简述
- Java中的堆栈和堆内存
- 内存常识
- 详细解读C语言结构体的内存对齐
- 【C语言】深度剖析数据在内存中的存储
- 【进阶】C语言——深度剖析数据在内存中的存储
- 优化SQL Server内存占用的有效方法(sqlserver内存占用)
- 内存Linux查看主机CPU内存信息指南(linux查看主机cpu)
- 内存泄漏的场景分析和避免方法总结,C语言内存泄漏详解
- Redis服务端下载,轻松搭建高效内存数据库(redis服务端下载)
- Linux下,如何实现最小内存占用?(linux最小内存)
- Pmap Linux:高效的进程内存映射分析工具(pmaplinux)
- Redis:内存中的数据刷新不可或缺(redis 刷盘)
- 使用Redis提升性能,降低内存占用(redis 降低内存占用)
- Redis如何配置才能有效利用内存(redis配置多少内存)
- C语言-内存函数的实现(二)之memmove
- C语言中的内存泄露怎样避免与检测
- C语言内存对齐实例详解