malloc的使用

首先说明一下,由malloc动态申请的内存空间是堆式的内存空间。

而静态的内存的空间是栈式的。

 

1.       大容量内存需求

网上说当我们需要的内存空间超过0.5兆的时候最好使用动态内存,也就是利用malloc来申请内存空间。可以这么认为,如果内存过大,就会不易管理,而malloc可以说事一个专业的内存管理者,但静态的则可以当成是一个业余的。毕竟术业有专攻。

2.       不确定内存需求

当我们需要的内存空间大小连我们自己也不知道的时候。为了不使内存空间的浪费。我们需要用到malloc函数。可以这样理解如果说静态的内存空间是一个铁盒子的话那么动态内存空间就可以看作是可伸缩的袋子,它的容量可以根据你所装物体的体积不同而定制。当然我们也可以利用静态内存,这样会有两种可能出现的结果,一是你所申请的空间不够用,程序异常。二是申请的内存过大,浪费。

我们来看在链表中情况,如果我们定义好了一个长度为十的链表之后想要在某个位置插入或删除一个节点。这个时候我们数组静态的话肯定会在数组数值的移动上花费有很大的开销。而利用malloc动态存储时就不会出现这样的情况。由于动态申请到存储空间不一定是连续的存储空间。所以当我们使用malloc申请空间时。计算机会在‘任意’可以申请到空间的地方给我们开辟需要的空间来供我们使用。新申请的空间与原来的空间只有通过指针想连接的关系物理上并一定有前后的关系。所以就不需要对原来的数据做移动操作。这样的系统开销就相对小了很多。相应的free的时候也是对“不相关”的空间进行操作。所以也不用对数据做移动操作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值