动态存储区与静态存储区的区别

书上就说,静态由系统分配固定存储空间动态,根据需要进行的动态分配存储空间方式我明白他们的生存期,全局局部堆栈的空间域的关系。就是不明白到底这个动态静态怎么理解,什么叫固定... 书上就说,静态由系统分配固定存储空间
动态,根据需要进行的动态分配存储空间方式
我明白他们的生存期,全局局部堆栈的空间域的关系。
就是不明白到底这个动态静态怎么理解,什么叫固定跟需要分配,所谓的静态,比如全局自由变量a,每次分配的地址都是固定的吗?每次他们分配出来的都是连续的吗,这个字面上的命名到底是什么由来
展开
 我来答
谷百客
推荐于2017-10-09 · TA获得超过795个赞
知道答主
回答量:131
采纳率:0%
帮助的人:69.7万
展开全部
静态和动态是相对于他们的存储结构来的,静态变量存储在一个叫“堆”的结构里,而动态变量则存储在“栈”的结构里,栈的特点是先进后出,咱们平常的所写程序的运行方式都是以栈的形式运行的,参考http://baike.baidu.com/view/38877.htm,比如一个函数A调用了函数B,B调用了函数C,由于根据冯诺依曼的顺序存储,顺序执行的原理,程序限制性A,于是就把A压入栈里,同时把A相关的变量也压入,A调用B时,再把B压入栈里,.......,C执行完后,弹出栈,随之C里面定义的变量就失去了意义(离开了作用域),然后继续执行B,.....,但如果变量是放到“堆”里,除非认为的将变量释放,则一直存储在里面,栈的弹出压入对它并没有根本影响,参考http://baike.baidu.com/view/249120.htm,解释或者有误...请指正。
百度网友a22c906
2012-01-07 · TA获得超过768个赞
知道小有建树答主
回答量:206
采纳率:0%
帮助的人:141万
展开全部
我理解吧,这个动态跟静态主要是针对指针而言的。而且对于单个变量来说,动态跟静态的概念体现的不是特别清楚,下面主要介绍数组吧。
如果你声明一个数组int a[100],那么这个数组的大小就是100,在内存中的位置也固定,如果后来发现数组不够大,你就只能重新定义一个更大的数组,而不能直接改变数组a的大小。这就是静态存储。
如果你声明一个指针int *p,一开始你想开辟一个100的数组,就写p = new int[100],后面发现100不够大,你可以先delete []p,把原来的空间释放掉,然后让p = new int[200],p就会指向一个大小为200的数组,这个数组的大小以及在内存中的位置可以根据需要不断变化。这就是动态存储。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式