一、野指针
1、指针变量中的值是非法内存地址,进而形成野指针
2、野指针不是NULL指针,是指向不可用内存地址的指针
3、NULL指针并无危害,很好判断,也很好调试
4、C语言中无法判断一个指针所保存的地址是否合法
二、野指针由来
1、局部指针变量没有初始化
2、指针所指向的变量在指针之前被销毁
3、使用已经释放过的指针
4、进行了错误指针运算
5、进行了错误的强制类型转换
三、设计指针基本原则(避免野指针)
1、绝不返回局部变量和局部数组的地址
2、任何变量在定义后必须0初始化
3、字符数组必须确认0结束符后才能成为字符串
4、任何使用与内存操作相关的函数必须指定长度信息
四、常见内存错误
1、结构体成员指针未初始化
2、结构体成员指针未分配足够的内存
3、内存分配成功,但并未初始化
4、内存操作越界
四、总结
内存错误是实际产品开发中最常见的问题,然而绝对大多数的bug都可以通过遵循基本的编程原则和规范来避免。
因此,在学习的时候要牢记和理解内存操作的基本原则,目的和意义
1、内存错误的本质源于指针保存的地址为非法值
–指针变量未初始化,保存随机值
–指针运算导致内存越界
2、内存泄露源于malloc和free不匹配
–当malloc次数多于free时,产生内存泄露
–当malloc次数少于free时,程序可能崩溃
© 版权声明
转载请注明出处,并标明原文链接。
本网站尊重知识产权,如有侵权,请及时联系我们删除。
本站所有原创内容仅用于学习和交流目的,未经作者和本站授权不得进行商业使用或盈利行为。
本网站尊重知识产权,如有侵权,请及时联系我们删除。
本站所有原创内容仅用于学习和交流目的,未经作者和本站授权不得进行商业使用或盈利行为。
THE END
暂无评论内容