PTA段错误解决方法

什么是段错误?

一旦一个程序访问了不可访问的内存,(这个内存区可能是不存在的,或者是是受到系统保护的,或者是缺少文件或文件损坏。)
cpu 就会产生相应的保护,就会报错segmentation fault

解决方法(伪)

  • 出现段错误时,首先应该想到段错误的定义,从它出发考虑引发错误的原因。
  • 在使用指针时:
    • 定义后:记得初始化指针
    • 使用时:记得判断是否为 NULL
  • 在使用数组时:
    • 注意数组是否被初始化
    • 注意数组下标是否越界
    • 注意数组元素是否存在
  • 在访问变量,注意变量所占地址空间是否已经被程序释放掉
  • 在处理变量时,注意变量的格式控制是否合理等

常见产生原因

指针相关

  • 创建了空指针,试图访问它的值
  • 非关联化一个空指针,然后分配(写一个值到一个不存在的目标)
    即:
    int *p=NULL;      *p=1;
  • malloc 动态分配内存,释放、置空完成后,再使用该指针。

无限递归,导致的堆栈溢出

内存越界(数组越界,变量类型不一致等)

访问不存在的内存地址

比如:

    int *p=NULL;
    *p=1;

访问系统保护的内存地址

访问只读的内存地址

posted @ 2021-10-09 20:51  kingwzun  阅读(3818)  评论(0编辑  收藏  举报