什么是堆,程序员分配释放(储存OC对象),如new、 alloc init等需要使用完后dealloc释放内存
什么是栈,编译器自动分配释放 ,存放函数的参数值,局部变量的值。(由系统自动收回)
静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。
为什么基本数据类型使用弱指针,不需要自己去释放?
答:OC的对象以堆的方式分配内存,堆区的内存需要程序员自己去回收。非OC对象则放在栈区,由系统自动去回收。(堆里面的内存是动态分配的,所以也就需要程序员手动的去添加内存、回收内存)
static作用
修饰局部变量:
1.让局部变量只初始化一次
2.局部变量在程序中只有一份内存
3.分配在静态存储区,该变量在整个程序执行期间不释放,其所分配的空间始终存在
4.改变了局部变量的生命周期(只到程序结束,这个局部变量才会销毁)
修饰全局变量:
1.该变量的作用域只限于本文件模块(全局变量的作用域仅限于当前文件,即被声明的文件中)如单例的声明