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就不再指向任何内存了,没有指向任何对象,消息发不出去的,不会造成任何影响,也不会报错。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、什么是空指针和野指针 1.空指针 1> 没有存储任何内存地址的指针就称为空指针(NULL指针)2> 空指针就是...
    Crazy2015阅读 842评论 0 3
  • 一些基础的知识,经常混淆,特整理下 空指针: 1. 没有存储任何内存地址的指针就称为空指针(NULL指针)。 2....
    刘应阅读 5,743评论 4 20
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,805评论 18 399
  • 想自己买个房 两间卧室 一间书房 一个阳台 还有一个能够让我折腾的厨房 简单的色彩搭配 让我感觉特别舒服的装修设计...
    janus0513阅读 233评论 0 0
  • 那家p2p公司最好_华融道理财 那家p2p公司最好_华融道理财 那家p2p公司最好_华融道理财
    訾屡噬85779阅读 154评论 0 0