美文网首页
野指针与空指针

野指针与空指针

作者: 骑着毛驴走起来 | 来源:发表于2017-12-15 17:12 被阅读28次

1.空指针

没有存储任何内存地址的指针就是空指针(null指针)

空指针就是被赋值为nil的指针,在没有被初始化之前为nil

2.野指针

野指针不是”nil”指针,是指向”垃圾内存"的指针(不可用内存)

野指针在程序运行时很危险

3.当野指针访问已经释放的对象时程序会崩溃

举例:

1)Person *p= [Person alloc]init];//创建person对象

2)[p setValue:10 forKey:@”age”];//给对象中age属性赋值

3)[p release];//给对象发送消息,释放对象

4)[p setValue : “child” forKey:@“name”];//程序崩溃

原因:3)后Person的对象内存已经被释放,但此时p仍然保存之前的地址,此时继续访问对象内存会导致程序崩溃.

解决办法:

1)Person *p= [Person alloc]init];//创建person对象

2)[p setValue:10 forKey:@”age”];//给对象中age属性赋值

3)[p release];//给对象发送消息,释放对象

4)p = nil;//此时p变成了空指针 不指向任何内存

4)[p setValue : “child” forKey:@“name”];//此时相当于给nil发送消息程序不会报错 输出p.name = 0 但java,c/c++中程序也会报错

4.由此也可以得出:在Objective-C中向nil发送消息是完全有效的——只是在运行时不会有任何作用.

相关文章

  • 野指针与空指针

    空指针 没有存储任何内存地址的指针就称为空指针(NULL指针) 空指针就是被赋值为0的指针,在没有被具体初始化之前...

  • 空指针与野指针

    空指针:没有存储任何内存地址的指针被称为空指针(也就是NULL指针)。在没有被初始化之前,其值为0.比如:Stud...

  • 野指针与空指针

    1.空指针 没有存储任何内存地址的指针就是空指针(null指针) 空指针就是被赋值为nil的指针,在没有被初始化之...

  • 空指针与野指针

    注意空指针和野指针的区别:空指针是指向null的指针,没有指任何内存地址。而野指针是,指向了一块内存地址,但是这块...

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

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

  • 空指针、野指针与悬垂指针

    空指针:指针指向的地址为空的指针叫空指针(NULL指针) 野指针:是指向“垃圾”内存(不可用内存)的指针产生原因:...

  • 空指针 野指针与悬垂指针

    一:空指针 指针指向的地址为空的指针叫空指针(NULL指针) 二:野指针 是指向“垃圾”内存(不可用内存)的指针产...

  • 野指针空指针万能指针

    野指针空指针万能指针

  • 空指针和野指针

    1、什么是空指针,什么是野指针 2、野指针的危害

  • 【Objective-C】09-空指针和野指针

    一、什么是空指针和野指针 1.空指针 1> 没有存储任何内存地址的指针就称为空指针(NULL指针)2> 空指针就是...

网友评论

      本文标题:野指针与空指针

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