A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 910428147 中级黑马   /  2016-3-23 14:45  /  1869 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

什么叫野指针?

14 个回复

倒序浏览
指向僵尸对象的指针就叫做野指针,当一块内存空间没有释放,也没有指针指向,那么这个对象就叫做僵尸对象
回复 使用道具 举报
当一个指针声明后没有初始化或赋值指向任何内存地址,则这个指针为野指针.如果通过这个指针访问任何内存地址,则会报BAC_ACCESS的野指针错误
回复 使用道具 举报
没有指向地址的指针
回复 使用道具 举报
那到底什么是野指针呢?怎么去理解这个“野”呢?我们先看别的两个关于“野”的 词:   野孩子:没人要,没人管的孩子;行为动作不守规矩,调皮捣蛋的孩子。   野狗:没有主人的狗,没有链子锁着的狗,喜欢四处咬人。   对付野孩子的最好办法是给他定一套规矩,好好管教。一旦发现没有按规矩办事就好 好收拾他。对付野狗最好的办法就是拿条狗链锁着它,不让它四处乱跑。   对付也指针肯怕比对付野孩子或野狗更困难。我们需要把对付野孩子和野狗的办法都 用上。既需要规矩,也需要链子。 前面我们把内存比作尺子,很轻松的理解了内存。尺子上的 0 毫米处就是内存的 0 地 址处,也就是 NULL 地址处。这条栓“野指针”的链子就是这个“NULL”。定义指针变量 的同时最好初始化为 NULL,用完指针之后也将指针变量的值设置为 NULL。也就是说除了 在使用时,别的时间都把指针“栓”到 0 地址处。这样它就老实了。
回复 使用道具 举报
没有正确指向的指针就是野指针
回复 使用道具 举报
没有指向,并且不指向NULL/nil的指针
回复 使用道具 举报
学习了,都是大神
回复 使用道具 举报
简单点说就是指向僵尸对象的指针,这个指针指向的对象已经被释放了,但是在内存中的这片区域还没有被回收。
回复 使用道具 举报
野指针错误:访问了一块坏的内存(已经被回收了,不可用的内存)。
回复 使用道具 举报
没有指向地址的指针
回复 使用道具 举报
定义一个指针变量,但没有初始化,那么这样的指针就是野指针,这个指针可能是系统的地址
回复 使用道具 举报
野指针就是指向僵尸对象的指针;

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

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

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

希望能帮到你。
回复 使用道具 举报
定义了一个指针,但是没有初始化,这时它指向的是一个垃圾数,也有可能是其他内存地址,这是运行程序可能会报错
回复 使用道具 举报
指针指向的地址不存在,称为野指针
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马