释放二维数组
来源:互联网 发布:图表数据区域 编辑:程序博客网 时间:2024/06/07 19:07
听了一些牛人说,释放二维数组的应该用逐行释放
(1)已知第二维
Code-1
char (*a)[N];//指向数组的指针
a = (char (*)[N])malloc(sizeof(char *) * m);//传闻不是这样,而是a=malloc(sizeof(char)*N*m);
printf("%d\n", sizeof(a));//4,指针
printf("%d\n", sizeof(a[0]));//N,一维数组
free(a);
(2)已知第一维
Code-2
char* a[M];//指针的数组
int i;
for(i=0; i<M; i++)
a[i] = (char *)malloc(sizeof(char) * n); //其实可以将a[i]看左一个数组名
printf("%d\n", sizeof(a));//4*M,指针数组
printf("%d\n", sizeof(a[0]));//4,指针
for(i=0; i<M; i++)
free(a[i]);
(3)已知第一维,一次分配内存(保证内存的连续性)
Code-3
char* a[M];//指针的数组
int i;
a[0] = (char *)malloc(sizeof(char) * M * n);
for(i=1; i<M; i++)
a[i] = a[i-1] + n;
printf("%d\n", sizeof(a));//4*M,指针数组
printf("%d\n", sizeof(a[0]));//4,指针
free(a[0]);
(4)两维都未知
Code-4
char **a;
int i;
a = (char **)malloc(sizeof(char *) * m);//分配指针数组
for(i=0; i<m; i++)
{
a[i] = (char *)malloc(sizeof(char) * n);//分配每个指针所指向的数组
}
printf("%d\n", sizeof(a));//4,指针
printf("%d\n", sizeof(a[0]));//4,指针
for(i=0; i<m; i++)
{
free(a[i]);
}
free(a);
(5)两维都未知,一次分配内存(保证内存的连续性)
Code-5
char **a;
int i;
a = (char **)malloc(sizeof(char *) * m);//分配指针数组
a[0] = (char *)malloc(sizeof(char) * m * n);//一次性分配所有空间
for(i=1; i<m; i++)
{
a[i] = a[i-1] + n;
}
printf("%d\n", sizeof(a));//4,指针
printf("%d\n", sizeof(a[0]));//4,指针
free(a[0]);
free(a);- 二维数组分配释放
- 释放二维数组
- 二维数组分配,释放空间
- 动态分配和释放二维数组
- 二维数组分配,释放空间
- 二维数组动态分配和释放
- c++动态二维数组创建与释放!
- 动态二维数组的分配与释放
- 动态二维数组的分配与释放
- 动态二维数组的分配与释放
- 动态申请二维数组并释放
- 二维数组动态分配和释放 [转]
- 动态二维数组的分配与释放
- 动态二维数组的分配与释放
- C 二维数组动态分配和释放
- C 二维数组动态分配和释放
- 动态分配和释放一、二维数组
- C++二维数组申请 与释放
- Getting Files Using DownloadManager
- 霍金称时光机理论上可行 警告勿回去看历史
- 这篇日志对于ios5上UI的自定义有个比较简明的描述
- windows xp 驱动开发(十八) USB驱动程序开发用到的工具总结
- android项目导入后中文乱码
- 释放二维数组
- Biorhythms&&http://poj.org/problem?id=1006
- Android: WiFi direct
- 使用系统定义宏,会使得编译器报告诡异的错误,很不容易发现。
- 初级——android布局属性
- 事业与职业
- 二分搜索
- JProfiler远程监控
- 遍历集合的常见的集中方法