博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS栈区 堆区等概念以及区别
阅读量:7153 次
发布时间:2019-06-29

本文共 490 字,大约阅读时间需要 1 分钟。

栈区 (stack)

栈一般来说都是一个先进后出的队列,后进入的数据,会被先释放掉.栈区存放函数内的局部变量,形参和函数返回值.栈区的内存由系统自动管理释放,内存的分配是连续的,且分配的内存地址是向下增长.申明的变量过了作用域范围后内存便会自动释放,不需要开发人员手动管理.

堆区 (heap)

堆一般是个链表或者树结构,不同语言有不同实现,相对而言复杂的多.堆区一般由开发人员手动管理(malloc()函数申请),如果开发人员没有手动释放(free()),容易造成内存泄漏,只有程序结束时由系统统一回收.堆区在内存中的分布是不连续的,是由不同区域的内存块通过指针链接.

总结

从上面可以看出,栈区内存由系统自动分配,速度较快,但是无法由开发人员控制.相比较而言,堆区有着更好的动态分配性能,但是一般存放在堆区的往往数据结构更加复杂,会导致操作的成本远远大于栈区,效率比栈区低

代码区

存放函数的二进制代码,代码区的内存是由系统控制

静态区(static)

静态区存放全局变量和静态变量,内存在程序结束后由系统统一释放

常量区

常量区存放常量字符串,也是在程序结束后由系统释放内存

转载地址:http://vylgl.baihongyu.com/

你可能感兴趣的文章
启动Tomcat服务时,出现org.apache.catalina.startup.VersionLoggerListener报错
查看>>
利用scons构建project
查看>>
Flash-制作空心文字
查看>>
Android高效率编码-细节,控件,架包,功能,工具,开源汇总,你想要的这里都有...
查看>>
防DNS劫持教程,手动修复本地DNS教程
查看>>
java.net.ServerSocket 解析
查看>>
机器学习就业学习计划,从零开始,全面涵盖机器学习重要知识点学习计划
查看>>
浅谈配置文件:spring-servlet.xml(spring-mvc.xml) 与 applicationContext.xml
查看>>
Django使用Pillow制作验证码
查看>>
P1934 封印
查看>>
linux 安装 Headless Chrome
查看>>
Oracle 11g安装步骤详谈
查看>>
java8_api_net
查看>>
wget: command not found
查看>>
lodash 判断相等 eq isEqual
查看>>
vue - v-text 和 v-html
查看>>
mysql 中只能使用 localhost 登录,用ip不能登陆
查看>>
C 存储类
查看>>
PhotoShop CS6 在2K屏幕下标题菜单等字体太小
查看>>
开发工程师的职场人生路
查看>>