二维数组 malloc

来源:互联网 发布:蒙文翻译软件 编辑:程序博客网 时间:2024/06/04 19:06


如果要给二维数组(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);

 

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


另参考 http://blog.csdn.net/dualeak/article/details/4677132

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 美图m6卡怎么办 手机出现无命令怎么办 深圳到香港怎么办手续 买车没有指标怎么办 北京摇号中签怎么办 深圳竞拍车牌后怎么办 冰箱玻璃门碎了怎么办 临沂麦德龙的卡怎么办 西安麦德龙超市会员卡怎么办 淮南家乐福退卡怎么办 满月宝宝眼白黄怎么办 坐飞机随身携带行李超重怎么办 婴儿换环境哭闹怎么办 美易分最后联系专员怎么办 三星手机启动不了怎么办 三星a5无法开机怎么办 三星c5死机了怎么办 三星c7无法开机怎么办 老式冰箱不制冷怎么办 电视灰屏了怎么办 沙发床放不下来怎么办 付款收据丢了怎么办 小红书登陆不上怎么办 超出范围的外卖怎么办 新氧订单过期怎么办 夏普电视遥控器失灵怎么办 西门子冰箱噪音大怎么办 高原饭煮不熟怎么办 电饭煲内胆坏了怎么办 电饭煲胶圈掉了怎么办 调温耦合器坏了怎么办 电饭煲主板坏了怎么办 meidea电饭煲出现c1怎么办 冰箱密封条长了怎么办 冰箱冷冻门变形怎么办 海尔冰箱冷藏室结冰怎么办 西门子冰箱冷藏室结冰怎么办 冰箱老是有霜冻 怎么办 冰箱里很多霜冻怎么办? 冰箱里有霜冻怎么办 冰柜冰堵了怎么办