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

野指针与空指针

作者: 54番茄 | 来源:发表于2018-03-28 14:54 被阅读5次

空指针

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

  • 空指针就是被赋值为0的指针,在没有被具体初始化之前,其值为0。
    例如:

Person * p1 = NULL;

Person * p2 = nil;

野指针

“野指针”不是NULL指针,是指向"垃圾"内存(不可用内存)的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。
野指针的形成:

Person * p1 = [Person alloc]init];
p.name = @"张三";
//给p指向的Person对象发送一条release消息。在这里,Person对象接收到release消息后,会马上被销毁,所占用的内存会被回收。
[p  release]
//这里Person对象被销毁了,内存就变成了"垃圾内存",这时候,p就称为了野指针,如果在去对p操作,那就会报野指针错误
p.age  =10;

//正确方式
p = nil;

总结:

  1. 利用野指针发消息是很危险的,会报错。也就是说,如果一个对象已经被回收了,就不要再去操作它,不要再尝试给它发消息。

  2. 利用空指针发消息是没有任何问题的,也就是说 p = nil 后在去 p.age = 10 是没有错误的,如果在操作销毁内存时,一定要记得把指针内存储的内存地址滞空nill。

相关文章

  • 野指针与空指针

    空指针 没有存储任何内存地址的指针就称为空指针(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/dlnycftx.html