首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C/C+编程笔记:动态存储分配究竟是怎么回事?最通俗的理解

以前我们先接触到数组,知道这是一种静态分配的方式,在程序执行前需要多少存储单元都是要提前规划好的,使用过程中需要再分配或者对多余内存进行回收是不方便的。

接着我们引入了动态存储分配,这种方式正好和静态分配的方式相对应,可以按需分配,动态回收。

这么讲可能过于抽象,我们来类比一个不太贴切的例子。

上厕所的时候,需要用纸。那么静态分配就相当于上厕所前凭借生活经验,预先扯一段纸,可能是3块也许是4块。

但是如果有一些意外情况,你扯的纸不够用,你没办法回到拿纸的地方再多一段;或者你扯的纸多了,也没办法把多余出来的纸接回原来的纸卷。

当然涉及到一些细节的地方,动态分配和静态分配可能没这么简单。

比如用纸的例子里,就算纸不够用,你凑合一下也许是可以的——但是计算机没那么聪明,在一些程序里,内存不够就是不够,计算机会耿直地回答你:内存不够,程序不能运行!

甚至在另一些情况下,比如说内存中一次拿不出这么多连续的单元,同样也会报错,无法运行。当然这是开发者出于安全的考虑,有意把程序设计成这个样子,但还是未免太“轴”了。

那么我们的动态分配呢?它就相当于去厕所时候,直接把一卷纸拿过去,用一段扯一段。完全不挑剔这一段和上一段是不是接连着的,非常的人性化。

看起来很完美,是吗?但是它也有缺点:首先,这一种操作其实在数据组织形式和遍历时候会更加麻烦,特别是对初学者不是很友好;其次,如果你想要精确定位自己拥有的内存单元是哪一个时候,只能从头到尾去顺藤摸瓜。

其实客观上是提升了工作难度,在有些工作环境下,有种把简单问题复杂化的感觉,也会一定程度上会降低程序执行的效率。

希望大家在学习过程中把抽象的知识结合利用自己的生活经验,类比类推,加深理解,强化认知,让学习变得好玩起来,有趣起来。

正所谓学习是最好的老师!祝愿同学们在以后的学习过程中能够有所收获,有所感悟,不要局限于课本上是死板的概念,而要灵活多变,在有趣贴合自己的理解方式中成长、进步。

感谢阅读,学习使人强大!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200822A0N1SS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券