PTA段错误解决方法


什么是段错误?

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

解决方法(伪)

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

常见产生原因

指针相关

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

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

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

访问不存在的内存地址

比如:

    int *p=NULL;
    *p=1;

访问系统保护的内存地址

访问只读的内存地址


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM