首页 > 代码库 > 堆栈的小理解
堆栈的小理解
程序运行的时候需要为程序的每一部分开辟内存空间来存放。
可具体分为五个部分:
- 栈:存放的是函数的参数值,局部变量的值,编译器自动分配和释放。
- 堆:存放的内容由程序员自己安排。.Net中有GC回收,C++中需要程序员自己释放。
- 全局区(静态区):全局变量和静态变量存放区,初始化的全局变量和静态变量都放在这个区域,未初始化的全局变量和静态变量则在相邻的另一块区域。
- 文字常量区:常量字符串就是放在这里。
- 程序代码区:存放函数体的二进制代码。
栈为先进后出,堆则为无序进出。
数据入栈从高到低,即最开始入栈的数据随程序的运行,其他数据的入栈,会从高点到低点,称为压栈。
数据入堆则是先在某个表(姑且认为是记录空白内存的登记表)找寻第一个足够大小的内存空间,然后返回这个内存空间的地址,然后将数据存储进对应的内存空间,数据存放后多余的内存空间则会重新登记在表中。
堆栈的小理解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。