一、什么是空指针和野指针

1.空指针

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

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

下面两个都是空指针:

  1. 1 Student *s1 = NULL;
  2. 3 Student *s2 = nil; 
复制代码


2.野指针

"野指针"不是NULL指针,是指向"垃圾"内存(不可用内存)的指针。野指针是非常危险的。

二、野指针和空指针例子

接下来用一个简单的例子对比一下野指针和空指针的区别

1.首先,打开Xcode的内存管理调试开关,它能帮助检测垃圾内存

<ignore_js_op>

  1. 1 Student *stu = [[Student alloc] init];
  2. 3 [stu setAge:10];
  3. 5 [stu release];
  4. 7 [stu setAge:10];
复制代码



运行程序,你会发现第7行报错了,是个野指针错误!

  1. 1 Student *stu = [[Student alloc] init];
  2. 3 [stu setAge:10];
  3. 5 [stu release];
  4. 7 stu = nil;
  5. 9 [stu setAge:10];
复制代码


注意第7行代码,stu变成了空指针,stu就不再指向任何内存了
http://www.cnblogs.com/mjios/archive/2013/04/22/3034788.html

相关文章: