内存管理问题

什么是堆,程序员分配释放(储存OC对象),如new、 alloc init等需要使用完后dealloc释放内存

什么是栈,编译器自动分配释放   ,存放函数的参数值,局部变量的值。(由系统自动收回)

静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。

为什么基本数据类型使用弱指针,不需要自己去释放?

答:OC的对象以堆的方式分配内存,堆区的内存需要程序员自己去回收。非OC对象则放在栈区,由系统自动去回收。(堆里面的内存是动态分配的,所以也就需要程序员手动的去添加内存、回收内存)

 static作用

修饰局部变量:

1.让局部变量只初始化一次 

2.局部变量在程序中只有一份内存

3.分配在静态存储区,该变量在整个程序执行期间不释放,其所分配的空间始终存在

4.改变了局部变量的生命周期(只到程序结束,这个局部变量才会销毁)

修饰全局变量:

1.该变量的作用域只限于本文件模块(全局变量的作用域仅限于当前文件,即被声明的文件中)如单例的声明

原文地址:https://www.cnblogs.com/mojiewei/p/6424531.html