码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-06-22 15:02:11      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:动态内存分配   静态内存分配   

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

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

标签:动态内存分配   静态内存分配   

原文地址:http://blog.csdn.net/u014100559/article/details/46592981

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!