也谈谈二维数组的动态分配

这里先给出一个二维数组的动态分配,然后再给出我认为的更好的一种分配方式。

一般的动态的二维分配都是先给出二级指针的初始化,然后就是用多个循环给出一级指针的内存分配,如下:

int **array1 = (int **)malloc(nrows * sizeof(int *)); for(i = 0; i < nrows; i++) array1[i] = (int *)malloc(ncolumns * sizeof(int));

我想这个是最常规的做法了,先给array分配一int**, 再给每个int*来一个malloc,没有问题,再来看另外一种实现方法,如下:

int **array2 = (int **)malloc(nrows * sizeof(int *)); array2[0] = (int *)malloc(nrows * ncolumns * sizeof(int)); for(i = 1; i < nrows; i++) array2[i] = array2[0] + i * ncolumns;

这样也能实现,效果我觉得更好吧,两个malloc,省去了多余的函数的调用。

暂时就说这么些吧。多多交流,欢迎拍砖!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值