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

堆栈的小理解

时间:2015-02-01 10:45:13      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

程序运行的时候需要为程序的每一部分开辟内存空间来存放。

可具体分为五个部分:

  1. 栈:存放的是函数的参数值,局部变量的值,编译器自动分配和释放。
  2. 堆:存放的内容由程序员自己安排。.Net中有GC回收,C++中需要程序员自己释放。
  3. 全局区(静态区):全局变量和静态变量存放区,初始化的全局变量和静态变量都放在这个区域,未初始化的全局变量和静态变量则在相邻的另一块区域。
  4. 文字常量区:常量字符串就是放在这里。
  5. 程序代码区:存放函数体的二进制代码。

栈为先进后出,堆则为无序进出。

数据入栈从高到低,即最开始入栈的数据随程序的运行,其他数据的入栈,会从高点到低点,称为压栈。

数据入堆则是先在某个表(姑且认为是记录空白内存的登记表)找寻第一个足够大小的内存空间,然后返回这个内存空间的地址,然后将数据存储进对应的内存空间,数据存放后多余的内存空间则会重新登记在表中。

 

堆栈的小理解

标签:

原文地址:http://www.cnblogs.com/ianism/p/4265226.html

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