C语言中的野指针

一、野指针

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
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容