欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

野指针和僵尸对像、空指针

程序员文章站 2024-01-14 21:38:10
...

1.僵尸对象

  • 只要一个对象被释放了, 我们就称这个对象为 "僵尸对象"
  • 已经被销毁的对象(不能再使用的对象)

2.野指针

  • 指向僵尸对象(不可用内存)的指针

  • 当一个指针指向一个僵尸对象, 我们就称这个指针为野指针

  • 给野指针发消息会报EXC_BAD_ACCESS错误 。message sent to deallocated instance 0x1001146b0

3.空指针

  • 没有指向存储空间的指针(里面存的是nil, 也就是0)
    给空指针发消息是没有任何反应的
  • 为了避免给野指针发送消息会报错, 一般情况
    下, 当一个对象被释放后我们会将这个对象的指针设置为空指针
Person *p = [[Person alloc] init]; // 1
        [p release]; // 1-1 = 0
        // *** -[Person release]: message sent to deallocated instance 0x1001146b0
        p = nil;
        [p release];
        [p release];
        [p release];