“野指针”不是NULL指针,是指向“垃圾”内存的指针。
野指针的成因主要有两种:
1)指针变量没有被初始化。
指针刚被创建时不会自动初始化为NULL指针,缺省值是随机的。
在创建的同时应该被初始化,要么设置为NULL,要么让它指向合法的内存.
如:
char* p=NULL;
char * str=(char*) malloc(100);
2)指针p被free或者delete之后,没有置为NULL,误以为p是合法的指针
3)指针操作超越了变量作用域的范围.
class A
{
public :
void Func(void) {cout<<"Func of class A"<<endl;}
}.;
void Test(void)
{
A* p=;
{
A a; //注意a的生命周期
p=&a;
}
p->Func(); //p是野指针。
}