分类: C/C++
2014-10-13 23:23:43
野指针通常是指因为指针变量中保存的值不是一个合法的内存地址造成的。野指针不是NULL指针,是指向不可用内存的指针。NULL指针不容易用错,因为if语句很好判断一个指针是不是NULL。C语言中没有任何手段可判断一个指针是否为野指针!
野指针的由来?
局部指针变量没有被初始化。
使用已经释放过后的指针。
指针所指向的变量在指针之前被销毁。
非法内存操作实例:
错因一:结构体成员指针未初始化,没有为结构体指针分配足够的内存
错因二:内存分配成功但并未初始化
错因三:数组越界
错因四:内存泄露
改进实例
错因五:多次指针释放
错因六:使用已释放的指针
C中的交通规则:
1.用malloc申请了内存后应该立即检查指针值是否为NULL防止使用值为NULL的指针
2.牢记数组的长度,防止数组越界操作,考虑用柔性数组
3.动态申请操作必须释放操作匹配,防止内存泄露和多次释放(谁申请谁释放,一进一出)
4.free指针后必须立即赋值为NULL
这与规则1天地合圆,保证所申请的指针都不是空指针。