黑马程序员技术交流社区

标题: 什么叫野指针? [打印本页]

作者: 910428147    时间: 2016-3-23 14:45
标题: 什么叫野指针?
什么叫野指针?
作者: 炯炯    时间: 2016-3-23 20:49
指向僵尸对象的指针就叫做野指针,当一块内存空间没有释放,也没有指针指向,那么这个对象就叫做僵尸对象
作者: zxinsunshine    时间: 2016-4-2 22:47
当一个指针声明后没有初始化或赋值指向任何内存地址,则这个指针为野指针.如果通过这个指针访问任何内存地址,则会报BAC_ACCESS的野指针错误
作者: shuide    时间: 2016-4-2 22:54
没有指向地址的指针
作者: qhw_fight    时间: 2016-4-2 23:01
那到底什么是野指针呢?怎么去理解这个“野”呢?我们先看别的两个关于“野”的 词:   野孩子:没人要,没人管的孩子;行为动作不守规矩,调皮捣蛋的孩子。   野狗:没有主人的狗,没有链子锁着的狗,喜欢四处咬人。   对付野孩子的最好办法是给他定一套规矩,好好管教。一旦发现没有按规矩办事就好 好收拾他。对付野狗最好的办法就是拿条狗链锁着它,不让它四处乱跑。   对付也指针肯怕比对付野孩子或野狗更困难。我们需要把对付野孩子和野狗的办法都 用上。既需要规矩,也需要链子。 前面我们把内存比作尺子,很轻松的理解了内存。尺子上的 0 毫米处就是内存的 0 地 址处,也就是 NULL 地址处。这条栓“野指针”的链子就是这个“NULL”。定义指针变量 的同时最好初始化为 NULL,用完指针之后也将指针变量的值设置为 NULL。也就是说除了 在使用时,别的时间都把指针“栓”到 0 地址处。这样它就老实了。
作者: 堕落天使    时间: 2016-4-3 09:20
没有正确指向的指针就是野指针
作者: z276698840    时间: 2016-4-3 11:08
没有指向,并且不指向NULL/nil的指针
作者: 缘之有缘    时间: 2016-4-3 18:54
学习了,都是大神
作者: xiexueqin    时间: 2016-4-3 21:36
简单点说就是指向僵尸对象的指针,这个指针指向的对象已经被释放了,但是在内存中的这片区域还没有被回收。
作者: UKnowINeedYou    时间: 2016-4-4 00:03
野指针错误:访问了一块坏的内存(已经被回收了,不可用的内存)。
作者: 毛小猪    时间: 2016-4-12 23:01
没有指向地址的指针
作者: 冷傲阳    时间: 2016-4-13 00:09
定义一个指针变量,但没有初始化,那么这样的指针就是野指针,这个指针可能是系统的地址
作者: Latinno    时间: 2016-4-13 13:20
野指针就是指向僵尸对象的指针;

僵尸对象就是由于使用完毕,被系统给销毁的对象,僵尸对象可以理解成废掉的对象,通过指针访问这个废掉的对象就会自然而然的出错。如果知道消息机制,你可以理解成——我们通过野指针向已经死去的一个对象发送了一条消息,而你期待着它的回复,然而死掉的东西如果给你回复的话,是不是很危险呢?

最后,还是说一下空指针吧。空指针是指那些值为nil的指针。说成零也可以,但不严谨,因为nil从本质上代表什么也没有,就是说这个指针不用于指向任何东西。

因此,要避免野指针的严重错误,在MRC机制中,我们常常会在销毁的对象后把野指针转变为空指针,这样即便是再误用到这个被变为空指针的“野指针”时,也不会出现问题了。

希望能帮到你。
作者: a752538236    时间: 2016-4-13 14:54
定义了一个指针,但是没有初始化,这时它指向的是一个垃圾数,也有可能是其他内存地址,这是运行程序可能会报错
作者: zghnyyez445    时间: 2016-4-13 18:31
指针指向的地址不存在,称为野指针




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2