美文网首页
野指针、僵尸、内存泄漏

野指针、僵尸、内存泄漏

作者: adaodao3056 | 来源:发表于2020-10-14 09:47 被阅读0次

signal:"EXC_BAD_ACCESS",这就是访问了被释放的内存地址造成的。

1、内存泄漏:对象使用完没有释放,导致内存浪费。
2、僵尸对象:已经被销毁的对象(不能再使用的对象)
3、野指针:指向僵尸对象(不可用内存)的指针。给野指针发消息会报EXC_BAD_ACCECC错误。
4、空指针:没有指向储存空间的指针(里面存的是nil,也就是0)。在oc中使用空指针调中方法不会报错。

野指针

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

申请1块空间,实际上是向系统申请1块别人不再使用的空间.
释放1块空间,指的是占用的空间不再使用,这个时候系统可以分配给别人去使用.
在这个个空间分配给别人之前 数据还是存在的.
OC对象释放以后,表示OC对象占用的空间可以分配给别人.
但是再分配给别人之前 这个空间仍然存在 对象的数据仍然存在.
僵尸对象: 1个已经被释放的对象 就叫做僵尸对象.
使用野指针访问僵尸对象.有的时候会出问题,有的时候不会出问题.

当野指针指向的僵尸对象所占用的空间还没有分配给别人的时候, - 这个时候其实是可以访问的.
因为对象的数据还在.
当野指针指向的对象所占用的空间分配给了别人的时候 这个时候访问就会出问题.
所以,你不要通过1个野指针去访问1个僵尸对象.
虽然可以通过野指针去访问已经被释放的对象,但是我们不允许这么做.

相关文章

  • 内存泄漏

    什么是内存泄漏引起内存泄漏的原因野指针,空指针,僵尸对象 1.什么是内存泄漏 内存泄漏(Memory Leak)是...

  • 野指针、僵尸、内存泄漏

    signal:"EXC_BAD_ACCESS",这就是访问了被释放的内存地址造成的。 1、内存泄漏:对象使用完没有...

  • 僵尸对象

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

  • 链接收藏

    iOS面试题 野指针 使用了释放的内存 内存泄漏 内存没有释放

  • iOS 常见面试题总结

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

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

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

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

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

  • Objective-C基础学习之野指针\空指针

    1.僵尸对象 已经被销毁的对象(不能再使用的对象) 2.野指针 指向僵尸对象(不可用内存)的指针 给野指针发消息会...

  • 智能指针和垃圾回收

    堆内存管理:智能指针与垃圾回收 显式内存管理 野指针 重复释放 内存泄漏 C++11 的智能指针 unique_p...

  • iOS-空指针,野指针,僵尸对象

    浅谈一下空指针,野指针,僵尸对象。 空指针:没有存储任何内存地址的指针,空指针的值是0; 野指针:指针指向的对象已...

网友评论

      本文标题:野指针、僵尸、内存泄漏

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