objective-c 空指针和野指针

1.空指针

1>没有存储任何内存地址的指针就称为空指针(NULL指针)

2>空指针就是赋值为0的指针,在没有被具体初始化之前,其值为0

e g:   Student  *s1 = NULL;

         Student s2 = nil;

2.野指针

野指针不是NULL指针,是指向垃圾内存的(不可用内存)的指针。野指针非常危险

e g: Student *stu = [Student alloc] init];

      //内存中有个指针变量stu(地址0xff45), 指向了Student对象(地址:0xff43)

        [stu setAge:10];       

//给stu所指向的Student对象发送一条setAge:消息,即调用Student对象的setAge:方法。目前Student对象扔存在于内存中。

       [stu release];

//给stu指向的Student对象发送一条release消息。Student对象会马上被销毁,所被占用的内存会被回收。地址0xff43的内存就变成了垃圾内存,指针变量stu仍指向这块内存,stu就称为野指针

       [stu setAge:10];

//运行程序会发现是个野指针错误

stu = nil;     [stu setAge:10];

//stu变成了空指针,stu就不再指向任何内存了,没有指向任何对象,消息发不出去的,不会造成任何影响,也不会报错。

    原文作者:zhaihongxia
    原文地址: https://www.jianshu.com/p/aa2e323ca7d5
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞