C/C++野指针

#野指针#
## 造成野指针的原因 ##
      1、指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的默认值是随机的,它会乱指一气。
      2、指针P被FREE或者DELETE之后,没有置为NULL,让人误以为P是个合法的指针。
      3、指针操作超越了变量的作用范围。这种情况让人防不胜防。
##避免出现野指针的一些方法##
(1) 声明指针时要进行初始化;

     int *p = NULL;

(2) 指针删除时要用对操作符;

    对于new 出来的单个指针,用delete进行释放
    对于new 出来的指针数组,如int[],要用delete []进行释放
    mallocc 出来的指针用free释放
    注:关于delete和delete []的详细使用介绍,请参考Effective C++条款16

(3)释放指针后要给指针NULL地址

    delete [] pointer;
    pointer = NULL;

(4)可以在分配完内存以后使用ASSERT进行检验
    int *p = 5;
    ASSERT(int != NULL);
    如果这样写的话,一旦条件判断不成立则程序会终止运行。主动终止程序总比运行时被迫崩溃的好,至少方便找出Bug的位置^_^。
[ASSERT的详细介绍][1x]
[1x]:<https://www.cnblogs.com/daochong/p/6571849.html>

猜你喜欢

转载自blog.csdn.net/geomancerest/article/details/80277985