mallco动态分配_为什么要使用动态存储器分配(malloc)?

摘自《深入理解计算机系统》

程序使用动态存储器分配的最重要的原因是它们经常直到程序实际运行,才知道某些数据结构的大小。

例:

加入一个程序读取n个ASCII吗的整数的链表,每一行一个整数,从标准输入到一个C数组,输入n个整数,存储n个整数,通常可以采用一种方法就是直接定义一个很大的静态数组。

#include < stdio.h>

#define N 1500

int a[N];

int main(){

int i,m;

scanf(“%d”,&m);

if(m>N)

printf(“读入数据大于最大数据!\n”);

for(i=0;i < m; i++ )

scanf("%d",&a[i]);

return 0;

}

采用这种定义固定大小的数组,通常会导致一个异常,当待读入数据大于N时,那么就会发生读入文件失败,这种写法在实际项目会加大程序的维护复杂度。

为了让程序自动适应存储分配的大小,此时我们需要采用动态分配存储空间的方式,动态改变数组大小,如下所示:

#include < stdio.h>

#include < stdlib.h>

int main(){

int *a,i,m;

scanf(“%d”,&m);

a=(int *)malloc(m*sizeof(int));

for(i=0;i < m;i++ )

scanf("%d",&a[i]);

free(a);

return 0;

}

通过以上的示例对比,我们可以发现动态存储分配,对c语言编程起着非常重要的作用,所以我们必须认真的掌握动态存储分配的技巧。

相关阅读:

malloc的使用方法及注意事项

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值