iOS 野指针和空指针

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

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

比如说 定义了一个Person 的类,Person类有一个 - (void)setName方法

Person * per = [[Person alloc]init];

[per setName]; 这句话的意思就是 给per所指向的Person对象发送一个setName消息

[per release];这句代码意思是 给per所指向的Person对象 发送一条release消息,Person对象收到release消息后,会被销毁,内存会被回收

[per setName];这句代码就会出现野指针错误,Person对象已经被销毁了,Person所占用的内存已经是垃圾内存,如果你还去访问这一块内存,那就会报野指针错误。这块内存已经不可用了,也不属于你了,你还去访问它,肯定是不合法的。

per = nil;这句代码就是把per指针置空,成为空指针

[per setName];此时这句代码虽然不报错,但是是不能被执行的,因为per为空指针。所以setName的方法是不能被调用的

时间: 2024-10-25 00:49:27

iOS 野指针和空指针的相关文章

僵尸对象与野指针以及空指针

僵尸对象:占用空间被释放的对象 野指针:指向僵尸对象的指针(给野指针发消息会报错) 空指针:指向nil的指针(给空指针发消息会不报错) 因为给野指针发消息会报错,因此我们要监听僵尸对象,这样就可以在控制台输出错误原因 设置如下图

关于野指针、空指针

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 Perso

空指针和野指针

[转自]http://www.cnblogs.com/mjios/archive/2013/04/22/3034788.html 本文目录 一.什么是空指针和野指针 二.野指针和空指针例子 说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序员,能够快速上手Objective-C.如果你还没有编程经验,或者对Objective-C.iOS开发不感兴趣,请忽略.学习本专题之前,建议先学习C语言专题. 一.什么是空指针和野指针 1.空指针 1> 没有存储

(转)空指针和野指针

本文目录 一.什么是空指针和野指针 二.野指针和空指针例子 一.什么是空指针和野指针 1.空指针 1> 没有存储任何内存地址的指针就称为空指针(NULL指针) 2> 空指针就是被赋值为0的指针,在没有被具体初始化之前,其值为0. 下面两个都是空指针: 1 Student *s1 = NULL; 2 3 Student *s2 = nil; 2.野指针 "野指针"不是NULL指针,是指向"垃圾"内存(不可用内存)的指针.野指针是非常危险的. 回到顶部 二.

李洪强iOS开发之【Objective-C】09-空指针和野指针

一.什么是空指针和野指针 1.空指针 1> 没有存储任何内存地址的指针就称为空指针(NULL指针) 2> 空指针就是被赋值为0的指针,在没有被具体初始化之前,其值为0. 下面两个都是空指针: 1 Student *s1 = NULL; 2 3 Student *s2 = nil; 2.野指针 "野指针"不是NULL指针,是指向"垃圾"内存(不可用内存)的指针.野指针是非常危险的. 二.野指针和空指针例子 接下来用一个简单的例子对比一下野指针和空指针的区别

OC语言—空指针和野指针

一.什么是空指针和野指针 1.空指针 1> 没有存储任何内存地址的指针就称为空指针(NULL指针) 2> 空指针就是被赋值为0的指针,在没有被具体初始化之前,其值为0. 下面两个都是空指针: 1 Student *s1 = NULL; 2 3 Student *s2 = nil; 2.野指针 "野指针"不是NULL指针,是指向"垃圾"内存(不可用内存)的指针.野指针是非常危险的. 二.野指针和空指针例子 接下来用一个简单的例子对比一下野指针和空指针的区别

Objective-C 空指针和野指针

一.什么是空指针和野指针 1.空指针 1> 没有存储任何内存地址的指针就称为空指针(NULL指针) 2> 空指针就是被赋值为0的指针,在没有被具体初始化之前,其值为0. 下面两个都是空指针: 1 Student *s1 = NULL; 2 3 Student *s2 = nil; 2.野指针 "野指针"不是NULL指针,是指向"垃圾"内存(不可用内存)的指针.野指针是非常危险的. 二.野指针和空指针例子 接下来用一个简单的例子对比一下野指针和空指针的区别

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

一.什么是空指针和野指针 1.空指针 1> 没有存储任何内存地址的指针就称为空指针(NULL指针) 2> 空指针就是被赋值为0的指针,在没有被具体初始化之前,其值为0. 下面两个都是空指针: 1 Student *s1 = NULL; 2 3 Student *s2 = nil; 复制代码 2.野指针 "野指针"不是NULL指针,是指向"垃圾"内存(不可用内存)的指针.野指针是非常危险的. 二.野指针和空指针例子 接下来用一个简单的例子对比一下野指针和空

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

一.什么是空指针和野指针 1.空指针 1> 没有存储不论什么内存地址的指针就称为空指针(NULL指针) 2> 空指针就是被赋值为0的指针.在没有被详细初始化之前.其值为0. 以下两个都是空指针: 1 Student *s1 = NULL; 2 3 Student *s2 = nil; 2.野指针 "野指针"不是NULL指针,是指向"垃圾"内存(不可用内存)的指针.野指针是很危急的. 回到顶部 二.野指针和空指针样例 接下来用一个简单的样例对照一下野指针和