野指针和段错误

来源:互联网 发布:淘宝一元的东西包邮 编辑:程序博客网 时间: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
原创粉丝点击