ios开发 变量和内存
2014-11-01 16:52
225 查看
栈区:主要用来存放局部变量, 传递参数, 存放函数的返回地址。.esp 始终指向栈顶, 栈中的数据越多, esp的值越小。
堆区:用于存放动态分配的对象, 当你使用 malloc和new 等进行分配时,所得到的空间就在堆中。动态分配得到的内存区域附带有分配信息, 所以你能够 free和delete它们。
数据区:全局,静态和常量是分配在数据区中的,数据区包括bss(未初始化数据区)和初始化数据区。
注意:
1) 堆向高内存地址生长;
2) 栈向低内存地址生长;
3) 堆和栈相向而生,堆和栈之间有个临界点,称为stkbrk。
1、一条进程在内存中的映射
假设现在有一个程序,它的函数调用顺序如下:
main(...) ->; func_1(...) ->; func_2(...) ->; func_3(...),即:主函数main调用函数func_1; 函数func_1调用函数func_2; 函数func_2调用函数func_3。
当一个程序被操作系统调入内存运行, 其对应的进程在内存中的映射如下图所示:
堆区:用于存放动态分配的对象, 当你使用 malloc和new 等进行分配时,所得到的空间就在堆中。动态分配得到的内存区域附带有分配信息, 所以你能够 free和delete它们。
数据区:全局,静态和常量是分配在数据区中的,数据区包括bss(未初始化数据区)和初始化数据区。
注意:
1) 堆向高内存地址生长;
2) 栈向低内存地址生长;
3) 堆和栈相向而生,堆和栈之间有个临界点,称为stkbrk。
1、一条进程在内存中的映射
假设现在有一个程序,它的函数调用顺序如下:
main(...) ->; func_1(...) ->; func_2(...) ->; func_3(...),即:主函数main调用函数func_1; 函数func_1调用函数func_2; 函数func_2调用函数func_3。
当一个程序被操作系统调入内存运行, 其对应的进程在内存中的映射如下图所示:
相关文章推荐
- 黑马程序员——零基础学习iOS开发——03 c语言基础语法:关键字、标示符、注释、数据结构、变量、变量内存分析、scanf函数
- 【零基础学习iOS开发】【02-C语言】06-变量与内存
- 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】06-变量与内存
- iOS开发之内存缓存机制
- 【无限互联】iOS开发视频教程— 2.2 iPhone开发之OC变量和基本数据类型1
- ios开发之 内存警告
- iOS开发之缓存(一):内存缓存
- ios开发笔记之 内存警告问题
- iOS开发缓存机制之—内存缓存机制
- iOS开发内存泄露修复
- 变量 内存 分配 ios iphone
- iOS开发笔记(五)Phone内存泄露:Leaks工具指引
- iOS开发笔记(五)Phone内存泄露:Leaks工具指引
- iOS开发笔记(五)Phone内存泄露:Leaks工具指引
- iOS开发缓存机制之—内存缓存机制
- 【无限互联】iOS开发视频教程—2.3 iPhone开发之OC变量和基本数据类型2
- IOS开发缓存机制之—内存缓存机制
- IOS开发缓存机制之—内存缓存机制
- 【iOS-cocos2d-X 游戏开发之十五】Cocos2dx中响应Android的Back(返回)与Menu(小房子)事件&&Cocos2dx自动释放粒子内存函数!
- iOS开发笔记(五)Phone内存泄露:Leaks工具指引