什么是内存泄漏
引起内存泄漏的原因
野指针,空指针,僵尸对象
1.什么是内存泄漏
内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费
2.引起内存泄漏的原因
1.Delegate/NSNotification
- Block
- NSTimer
3.野指针,空指针,僵尸对象
野指针:指针指向的对象已经被回收掉了.这个指针就叫做野指针.
空指针:没有存储任何内存地址的指针就称为空指针
僵尸对象: 一个已经被释放的对象 就叫做僵尸对象.
访问僵尸对象后果:使用野指针访问僵尸对象.有的时候会出问题,有的时候不会出问题
僵尸对象检测:开启zombie_enabled,然用使用profile方式构建,在instruments工具中,使用zombie模板,待app crash后可直接定位到crash的代码
僵尸对象避免:当1个指针变为野指针以后. 就把这个指针的值设置为nil
注意:
- 当野指针指向的对象所占用的空间分配给了别人的时候 这个时候访问会出问题.
- 当野指针指向的僵尸对象所占用的空间还没有分配给别人的时候,这个时候其实是可以访问的.
网友评论