PTA段错误解决方法
什么是段错误?
一旦一个程序访问了不可访问的内存,(这个内存区可能是不存在的,或者是是受到系统保护的,或者是缺少文件或文件损坏。)
cpu 就会产生相应的保护,就会报错segmentation fault
解决方法(伪)
- 出现段错误时,首先应该想到段错误的定义,从它出发考虑引发错误的原因。
- 在使用指针时:
-
- 定义后:记得初始化指针
-
- 使用时:记得判断是否为 NULL
- 在使用数组时:
-
- 注意数组是否被初始化
-
- 注意数组下标是否越界
-
- 注意数组元素是否存在
- 在访问变量,注意变量所占地址空间是否已经被程序释放掉
- 在处理变量时,注意变量的格式控制是否合理等
常见产生原因
指针相关
- 创建了空指针,试图访问它的值
- 非关联化一个空指针,然后分配(写一个值到一个不存在的目标)
即:
int *p=NULL; *p=1;
- malloc 动态分配内存,释放、置空完成后,再使用该指针。
无限递归,导致的堆栈溢出
内存越界(数组越界,变量类型不一致等)
访问不存在的内存地址
比如:
int *p=NULL;
*p=1;