C语言中什么叫野指针

是不是还能造成内存泄漏还有关系呢????????

野指针指向一个已删除的对象或未申请访问受限内存区域的指针。

与空指针不同,野指针无法通过简单地判断是否为 NULL避免,而只能通过养成良好的编程习惯来尽力减少。对野指针进行操作很容易造成程序错误。需对指针进行初始化。野指针主要是因为这些疏忽而出现的删除或申请访问受限内存区域的指针。

扩展资料

指针变量未初始化

任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。如果没有初始化,编译器会报错“ ‘point’ may be uninitializedin the function ”。

指针释放后之后未置空

有时指针在free或delete后未赋值 NULL,便会使人以为是合法的。别看free和delete的名字(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。此时指针指向的就是“垃圾”内存。释放后的指针应立即将指针置为NULL,防止产生“野指针”。

参考资料来源:百度百科-野指针

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-27
简单说,所谓野指针,就是部知道该指针指向的指针。造成野指针的情况一般是释放了指针,但是却没有把指针置空
第2个回答  2010-08-28
就是指那些没有被正常初始化,或者用过了却没有重置的指针
这时指针指向了一部分未知内存
误用的话可能会出问题
所以指针最好都初始化为NULL,用过后要重置...

一般不会造成内存泄漏
但是有可能造成缓冲区溢出
第3个回答  推荐于2017-09-15
举例:
int *p = new int[0];
*p = 3;
现在p指向一个内存地址,该地址所存的值是3
现在删除这个指针:
delete p;
这个时候p所指向的那个内存已经清除,值为不确定。
那么p就是野指针。这个时候对*p进行任何赋值或操作都是有潜在危险的。
正确的做法应该在删除指针所指向的内存后,将指针赋值为0或NULL本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网