美文网首页
如何Check僵尸对象

如何Check僵尸对象

作者: ManThirty | 来源:发表于2017-08-17 23:38 被阅读0次

野指针和僵尸对象

野指针:

C语言:当我们声明一个指针变量,没有为这个指针变量赋初始值,这个指针变量的值是一个垃圾指针,指向一块随机的内存空间。
OC: 指针指向的对象已经被回收掉了,这个指针就叫做野指针。

僵尸对象:
野指针指向的已经释放的对象就叫僵尸对象。

空指针:
没有指向存储空间的指针

潜在风险

使用野指针访问僵尸对象,有的时候会出问题,有的时候不会出问题。当野指针指向的僵尸对象所占用的空间还没有分配给其他对象时,可以进行访问,因为对象数据还在。否则,就会出现程序崩溃,报EXC_BAD_ACCESS错误。

如何检测?

Xcode集成了检测僵尸对象的功能,但由于开启此项功能比较耗性能,所以默认是关闭的,需要我们手动开启。开启步骤如下:

第一步:打开Xcode,选择左上角Xcode->Preferences->Behaviors,设置一下输出信息,在调试的时候可以给我们提供更多的信息。
第二步:设置环境变量:菜单->Product->Scheme->Edit Scheme,勾选下图红色框内的三个选项。
第三步:运行程序,程序检测到僵尸对象会中止运行。
第四步:在控制台查看日志和进程号(图示进程号为4984
第五步:打开终端,输入sudo malloc_history + 进程号 + 内存地址,得到日志,可以通过路径找到真正的原因。

相关文章

  • 如何Check僵尸对象

    野指针和僵尸对象 野指针: C语言:当我们声明一个指针变量,没有为这个指针变量赋初始值,这个指针变量的值是一个垃圾...

  • iOS 常见面试题总结

    1. 空指针、野指针以及僵尸对象的理解,如何避免野指针错误。解答:内存被释放的对象为僵尸对象(不能再使用的对象)。...

  • Objective-C基础学习之关闭ARC功能和开启僵尸对象监控

    1.如何关闭ARC功能 2.如何开启僵尸对象监控 默认情况下,Xcode是不会管僵尸对象的,使用一块被释放的内存也...

  • 野指针和僵尸对象

    野指针 僵尸对象 无法复活僵尸对象 检测僵尸对象方法 target--->diagnostics--->Zombi...

  • 僵尸对象和野指针

    僵尸对象 僵尸对象创建的过程 野指针

  • 僵尸对象、野指针、空指针是什么?

    僵尸对象: 已经被销毁的对象(xcode 中默认不实时检查僵尸对象) 野指针: 指向僵尸对象(不可用的内存)的指针...

  • 僵尸对象、野指针、空指针

    僵尸对象: 已经被销毁的对象(xcode 中默认不实时检查僵尸对象) 野指针 指向僵尸对象(不可用的内存)的指针 ...

  • 内存管理--35:僵尸对象(Zombie Object)

    僵尸对象 已经被销毁的对象,我们就称这个对象为“僵尸对象” 野指针 当一个指针指向一个僵尸对象,我们就称为这个指针...

  • 野指针、空指针、僵尸对象

    一、僵尸对象: 一个OC对象引用计数为0被释放后就变成僵尸对象了,僵尸对象的内存已经被系统回收,虽然可能该对象还存...

  • 僵尸对象

    首先僵尸对象和内存泄漏并无关系。当一个对象被释放后,如果其指针没有置空,则这个指针就变成了野指针,此时这个指针指向...

网友评论

      本文标题:如何Check僵尸对象

      本文链接:https://www.haomeiwen.com/subject/kqosrxtx.html