野指针是如何产生的?

来源:百度知道 编辑:UC知道 时间:2024/09/23 14:27:24
我记得声明一个指针时有种声明方式会产生野指针,请问怎么声明来着?我给忘了。。。。
举个例子

不是那个意思。。。。

野指针是指:指向一个已删除的对象或未申请访问受限内存区域的指针。与空指针不同,野指针无法通过简单地判断是否为NULL避免,而只能通过养成良好的编程习惯来尽力减少。对野指针进行操作很容易造成程序错误。
野指针产生原因:
1.指针变量未初始化
任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。
2.指针释放后之后未置空
有时指针在free或delete后未赋值 NULL,便会使人以为是合法的。别看free和delete的名字(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。此时指针指向的就是“垃圾”内存。释放后的指针应立即将指针置为NULL,防止产生“野指针”。
3.指针操作超越变量作用域
不要返回指向栈内存的指针或引用,因为栈内存在函数结束时会被释放。

野指针的产生有三种:1,指针变量未被初始化;2,动态内存中指针被free或delete释放后没有置NULL;3,指针操作超越了变量的作用范围。一般我定义指针都是这样int *p=NULL;如果不初始化,那就是野指针了啊。你是这个意思吗?