关于野指针空指针

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于野指针空指针相关的知识,希望对你有一定的参考价值。

 1 /*
 2 1>僵尸对象:所占用内存已经被回收的对象,将是对象不能再使用
 3  2>野指针:指向僵尸对象(不可用内存)的指针
 4  3>空指针:没有指向任何东西的指针(存储的对象可以是nil,NULL,0)
 5     * 给野指针发送消息会报错,给空指针发送消息不会报错
 6     */
 7 
 8 #import <Foundation/Foundation.h>
 9 #import "Person.h"
10 
11 int main(){
12     // 1
13     Person *p = [[Personalloc]init];
14     
15     NSUInteger c = [p retainCount];
16     
17     NSLog(@"计数器:%ld",c);
18     
19     // 2 retain方法返回的是对象本身
20     [p retain];
21     
22     // 1
23     [p release];
24     
25     // 0 野指针:指向僵尸对象(不可用内存)的指针
26     [p release];
27     //
28     p.age = 10;
29     //指针p变成空指针
30     p = nil;
31     
32     // EXC_BAD-ACCESS:访问了一块坏的内存(已经被回收、不能使用的内存)
33     // 野指针错误
34     // OC中不存在空指针错误,给空指针发送消息不报错
35     [p release];
36     
37     return0;
38 }

 

以上是关于关于野指针空指针的主要内容,如果未能解决你的问题,请参考以下文章

(转)空指针和野指针

C++ 空指针和野指针

野指针空指针

Objective-C 空指针和野指针

Objective-C09-空指针和野指针

iOS 野指针和空指针