前言
1.内存管理:
内存的作用:存储数据
内存管理的两个方面:
1)如何将数据存储到内存中
声明1个变量,然后将数据存储进去
2)当数据不再使用的时候,占用的内存空间如何被释放
一、内存中的五大区域
1)栈:局部变量,什么时候被释放呢?
if(1)
{
int num = 12;
}
大括号结束时,被释放。
局部变量,当局部变量的作用域被执行完毕之后,这个局部变量就会被系统立即回收。
num++;
这儿能不能num++?不能,因为执行到这句话时候,num已经不见了啊,已经从内存中消失了啊
2)堆:OC对象,malloc、realloc、calloc申请的空间,动态申请的空间。使用C函数申请的动态空间
3)BSS段:未初始化的全局变量和静态变量,一旦初始化就回收,并转存到数据段中
4)数据段(常量区):已经初始化的全局变量和静态变量,直到程序结束的时候才会被回收。
5)代码段:代码,程序结束的时候,系统会自动回收存储在代码段当中的数据。
6)栈 、 BSS段 、 数据段 、 代码段,存储在它们中的数据的回收,是由系统自动完成的。不需要我们干预。
