野指针出现的情况及解决方法

首先我们知道野指针的定义是:指向一个已经删除的对象或未申请访问受限的内存区域的指针。


出现野指针的三种情况:

1.定义指针时未初始化

     int *p;

     scanf("%d",p);

2.动态创建内存free掉后,没有把指针指向NULL

    int *p=(int *)malloc(sizeof(int));

    free(p);

3.指针超出了变量的作用范围

   当你在调用函数时,返回一个指向栈内存的指针时,因为当函数结束时,栈帧回退,栈内存被删除。


对应的解决方法:

1.定义时给指针初始化成一个具体的地址或者NULL

   int *p=0x08213212;   或者 int *p=NULL;

2.free掉动态创建内存后,让指针指向NULL;

   int  *p=(int *)malloc(sizeof(int));

   free(p);

   p=NULL;

3.

在变量的作用域结束前释放掉变量的地址空间并且让指针指向NULL


你可能感兴趣的:(C/C++)