XZ_iOS之动态内存分配(Dynamic memory allocation)

来源:互联网 发布:云计算工程师发展前景 编辑:程序博客网 时间:2024/06/06 01:27
内存:5个区域
从高到低分为:栈区(8兆以下,7.5兆以上)、堆区(非常大)、静态区、常量区、代码区
1、栈区:系统分配内存以及回收内存。函数体内创建的变量的分配在栈区。当函数循环分支执行结束后,局部变量生命周期结束,不能再被使用,由系统收回权限,但是不清理数据。
局部变量基本都在栈区。
栈区的特点:后来居上,先进后出,后进先出。
int a =10;// a存在内存的栈区,10存在内存的常量区。
2、堆区:动态分配内存。由用户(程序员)分配和回收,如果程序员未回收内存,则,内存会越用越少,导致内存不够用,程序崩溃。当程序退出时,堆内存由系统回收。
3、常量区:用于存放常量的内存区域。由系统分配回收;常量区的数据只能被读取,不能被修改,修改会造成崩溃;程序结束后,被回收。
例:10,1.5,'a','hello'
4、静态区(全局区):定义在函数体外面的变量(全局变量),由系统开辟空间,程序运行过程中一直存在,到程序退出,由系统回收。只初始化一次,在编译的时候进行初始化,运行期间可以修改。
5、代码区:存放源代码编译结果的区域。将代码编译成二进制。由系统分配、回收;只能读取,不能修改。
阅读全文
0 0
原创粉丝点击