简单理解动态内存分配和静态内存分配的区别

在涉及到内存分配时,我们一般都要考虑到两种内存分配方式,一种是动态内存分配,另一种是静态内存分配,我们该怎么理解这两者的区别呢?
在我看来,静态内存分配和动态内存分配比较典型的例子就是数组和链表,数组的长度是预先定义好的,在整个程序中是固定不变的,所以他在内存分配时是以静态内存分配的方式进行的。而链表,它的信息有可能会随时更改,内存的分配取决于我们实际输入的数据,这样就用到了动态内存分配的方式。
静态内存分配是在程序编译或者运行过程中,按事先规定的大小分配内存空间的分配方式,他的前提的必须事先知道所需内存空间的大小,它的内存分配在栈区和全局变量区。
动态内存分配是按输入信息的大小分配所需要的内存单元,他的特点是按需分配,内存分配在堆区。
为了便于理解我们来举个小例子,静态内存分配和动态内存分配的方式我们可以比作我们去旅游,旅游之前沃恩肯定要做的事情是带好钱,现在我们有两种带钱的方式,一种是一次性的带足够的钱,另一种是先带一点钱,足够我们买飞机票到达旅游的地点,当我们看到什么需要买的东西时,打电话给自己的亲人或者朋友,让他们给你打过你足够买你需要东西的钱。我们可以看到,你要是只要一次钱,你只能是提前做好预算,只能是比你计划的所需要的钱要多,而且只能多不能少,否则的话,你到了旅游的地方将不能再回到你的家,这是一点。而需要多少钱就让亲朋好友打多少钱的方式在我们看来很是笨重,但是我们这里只是要说明动态内存分配的特点,动态内存分配是按照我们需要多少钱就给我们送多少钱。
在这里我们可以考虑一下两者的执行速率和内存空间分配的问题,由上面的例子我们可以很直白的看出,静态内存分配比动态内存分配的速率要高不少,但是我们也看到,静态内存分配的方式有可能会有内存剩余也就是有可能会有我们不使用的内存空间,这样就造成了内存的浪费。
  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值