4个回答
展开全部
野指针指向一个已删除的对象或未申请访问受限内存区域的指针。
与空指针不同,野指针无法通过简单地判断是否为 NULL避免,而只能通过养成良好的编程习惯来尽力减少。对野指针进行操作很容易造成程序错误。需对指针进行初始化。野指针主要是因为这些疏忽而出现的删除或申请访问受限内存区域的指针。
扩展资料
指针变量未初始化
任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。如果没有初始化,编译器会报错“ ‘point’ may be uninitializedin the function ”。
指针释放后之后未置空
有时指针在free或delete后未赋值 NULL,便会使人以为是合法的。别看free和delete的名字(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。此时指针指向的就是“垃圾”内存。释放后的指针应立即将指针置为NULL,防止产生“野指针”。
参考资料来源:百度百科-野指针
展开全部
简单说,所谓野指针,就是部知道该指针指向的指针。造成野指针的情况一般是释放了指针,但是却没有把指针置空
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就是指那些没有被正常初始化,或者用过了却没有重置的指针
这时指针指向了一部分未知内存
误用的话可能会出问题
所以指针最好都初始化为NULL,用过后要重置...
一般不会造成内存泄漏
但是有可能造成缓冲区溢出
这时指针指向了一部分未知内存
误用的话可能会出问题
所以指针最好都初始化为NULL,用过后要重置...
一般不会造成内存泄漏
但是有可能造成缓冲区溢出
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
举例:
int *p = new int[0];
*p = 3;
现在p指向一个内存地址,该地址所存的值是3
现在删除这个指针:
delete p;
这个时候p所指向的那个内存已经清除,值为不确定。
那么p就是野指针。这个时候对*p进行任何赋值或操作都是有潜在危险的。
正确的做法应该在删除指针所指向的内存后,将指针赋值为0或NULL
int *p = new int[0];
*p = 3;
现在p指向一个内存地址,该地址所存的值是3
现在删除这个指针:
delete p;
这个时候p所指向的那个内存已经清除,值为不确定。
那么p就是野指针。这个时候对*p进行任何赋值或操作都是有潜在危险的。
正确的做法应该在删除指针所指向的内存后,将指针赋值为0或NULL
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询