野指针和段错误
来源:互联网 发布:淘宝一元的东西包邮 编辑:程序博客网 时间:2024/05/18 02:45
野指针:指针指向了一个不确定的地址空间或者是虽然指向了一个确定的地址空间,但是引用这个地址空间
的结果是不可预知的!这样的指针就称为野指针!
野指针的危害:
1、段错误(其实就是地址错误!)
2、没有结果,现在不会发生错误!这个时候错误很难找出来的!===》要避免野指针!
3、发生连环错误!循环叠加,莫名其妙的错误!
野指针产生的原因:
1、使用指针之前没有初始化或者没有指向明确的,可用的地址空间!
2、不清楚某些地址空间的访问权限,试图修改这个空间里面的值!
char *str = "hello";//字符串常量是只读的,没有修改的权限!
*(str + 1) = 'w';
3、有权限,但是超过人家给你的权限了;
int buf[4] = {1,2,3,4};
*(buf + 4) = 10;//可能成功,也可能失败;
怎么避免野指针呢?
1、养成良好的编码习惯!定义指针的时候初始化为NULL;即使以后有段错误,也是有警报的!
2、使用指针变量之前,一定检查一下指针变量有没有指向确定的,有操作权限的空间;
3、当指针变量不使用的时候,你要把它指向NULL;
NULL;
#ifdef _cplusplus//如果当期的编译环境是C++的话
#define NULL 0
#else
#define NULL (void *)0
#endif
的结果是不可预知的!这样的指针就称为野指针!
野指针的危害:
1、段错误(其实就是地址错误!)
2、没有结果,现在不会发生错误!这个时候错误很难找出来的!===》要避免野指针!
3、发生连环错误!循环叠加,莫名其妙的错误!
野指针产生的原因:
1、使用指针之前没有初始化或者没有指向明确的,可用的地址空间!
2、不清楚某些地址空间的访问权限,试图修改这个空间里面的值!
char *str = "hello";//字符串常量是只读的,没有修改的权限!
*(str + 1) = 'w';
3、有权限,但是超过人家给你的权限了;
int buf[4] = {1,2,3,4};
*(buf + 4) = 10;//可能成功,也可能失败;
怎么避免野指针呢?
1、养成良好的编码习惯!定义指针的时候初始化为NULL;即使以后有段错误,也是有警报的!
2、使用指针变量之前,一定检查一下指针变量有没有指向确定的,有操作权限的空间;
3、当指针变量不使用的时候,你要把它指向NULL;
NULL;
#ifdef _cplusplus//如果当期的编译环境是C++的话
#define NULL 0
#else
#define NULL (void *)0
#endif
阅读全文
0 0
- 野指针和段错误
- 调试段错误和指针问题
- 指针使用产生段错误
- 指针 段错误 segament fault
- 指针 段错误 segament fault
- 指针 段错误 segament fault
- 二级指针及段错误
- C语言指针段错误
- 野指针引发的段错误(附解决方法)
- 总线错误和段错误
- Mysql段错误——NULL指针
- 一个指针引起的段错误
- 段错误 (核心已转储) 字符指针 ubuntu
- 驱动从PC指针分析段错误
- 指针 段溢出 段错误的自我学习
- core dump和段错误
- 总线错误和段错误原因
- 总线错误和段错误相关概念
- MATLAB之微分处理图像前向差分
- MVC基本介绍
- 基于内容的推荐算法
- 《七点三刻》023期 现实版“战狼”/日本天皇退位/马云、刘强东精准扶贫/一周财经风云榜…
- linux的挂载重启后就消失
- 野指针和段错误
- linux expect spawn的用法
- 那么多GAN哪个好?谷歌大脑泼来冷水:都和原版差不多
- AWS深度学习摄像头,将对机器学习产业有何影响?
- 人工智能的价值地图:AI产业增强革命的模式与路径
- eclipse安装时出现Installation failed with an error(解决方案)
- 意见征集,世界AI智商评测量标准2018年新版讨论方案
- IDC Future Scape : 2018年全球物联网十大趋势性预测,5G将加速IoT发展
- 解决微信公众平台IP白名单