一、什么是空指针和野指针
1.空指针
1> 没有存储任何内存地址的指针就称为空指针(NULL指针)
2> 空指针就是被赋值为0的指针,在没有被具体初始化之前,其值为0。
下面两个都是空指针:
- 1 Student *s1 = NULL;
- 2
- 3 Student *s2 = nil;
复制代码
2.野指针
"野指针"不是NULL指针,是指向"垃圾"内存(不可用内存)的指针。野指针是非常危险的。
二、野指针和空指针例子
接下来用一个简单的例子对比一下野指针和空指针的区别
1.首先,打开Xcode的内存管理调试开关,它能帮助检测垃圾内存
<ignore_js_op>
- 1 Student *stu = [[Student alloc] init];
- 2
- 3 [stu setAge:10];
- 4
- 5 [stu release];
- 6
- 7 [stu setAge:10];
复制代码
运行程序,你会发现第7行报错了,是个野指针错误!
- 1 Student *stu = [[Student alloc] init];
- 2
- 3 [stu setAge:10];
- 4
- 5 [stu release];
- 6
- 7 stu = nil;
- 8
- 9 [stu setAge:10];
复制代码
注意第7行代码,stu变成了空指针,stu就不再指向任何内存了 http://www.cnblogs.com/mjios/archive/2013/04/22/3034788.html
|
请发表评论