栈和堆
技术博客http://www.cnblogs.com/ChenYilong/
新浪微博http://weibo.com/luohanchenyilong
栈和堆
技术博客http://www.cnblogs.com/ChenYilong/新浪微博http://weibo.com/luohanchenyilong
数据在内存中的存放
.1. 栈区(stack) 由编译器自动分配并释放,一般存放函数的参数值,局 部变量等
.2. 堆区(heap) 由程序员分配和释放,如果程序员不释放,程序结束时, 可能会由操作系统回收
.3. 寄存器区 用来保存栈顶指针和指令指针
.4. 全局区(静态区)全局变量和静态变量的存储是放在一起的,初始 化的全局变量和静态变量存放在一块区域,未初始化的全局变量和 静态变量在相邻的另一块区域,程序结束后由系统释放。
.5. 文字常量区 存放常量字符串,程序结束后由系统释放
.6. 程序代码区 存放函数的二进制代码
栈
栈:
1> 大小有限制 iOS(主线程) 1M
2> 栈的内存是连续的 栈的空间一旦被耗尽,程序直接overflow
栈--程序执行所在的内存空间(压栈,先进后出)
栈
I =>相当于一个标签,程序中可以通过这个标签来访问到变量的内容
堆
只负责申请空间,不负责贴标签
只是负责申请空间,并返回给指针
进程&线程
• 进程的作用:分配程序的内存空间 •线程是指令集合,顺序执行• 每个进程都包含一个主线程
© chenyilong. Powered by Postach.io