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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

C语言C++编程学习交流圈子,QQ群【757874045点击进入微信公众号:C语言编程学习基地

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

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/112Q/p/13546716.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!