栈和堆 栈和堆


技术博客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