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

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

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

4b19db8789a67a7141a962d67771f9e5.png


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

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

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

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

19c5d30723792d201d83da3f8e269042.png


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

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

86428af83d046ef195b05c3e8d94b3c1.gif

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

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

ee755973af315c6e8f42a4d823449a66.png


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

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

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

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

自学C/C++编程难度很大,如果你想更快提升自己的编程能力和编写项目的水平,欢迎一起共同成长!

C语言C++编程学习交流圈子,关注+私信【C/C++编程】微信公众号:C语言编程学习基地

有一些源码和资料分享,欢迎转行也学习编程的伙伴,和大家一起交流成长会比自己琢磨更快哦!

831267cd0df74c9764b86476d120f1ab.png
87157e5e2392543181fec613078d0775.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值