PTA段错误解决方法
什么是段错误?
一旦一个程序访问了不可访问的内存,(这个内存区可能是不存在的,或者是是受到系统保护的,或者是缺少文件或文件损坏。)
cpu 就会产生相应的保护,就会报错segmentation fault
解决方法(伪)
- 出现段错误时,首先应该想到段错误的定义,从它出发考虑引发错误的原因。
- 在使用指针时:
-
- 定义后:记得初始化指针
-
- 使用时:记得判断是否为 NULL
- 在使用数组时:
-
- 注意数组是否被初始化
-
- 注意数组下标是否越界
-
- 注意数组元素是否存在
- 在访问变量,注意变量所占地址空间是否已经被程序释放掉
- 在处理变量时,注意变量的格式控制是否合理等
常见产生原因
指针相关
- 创建了空指针,试图访问它的值
- 非关联化一个空指针,然后分配(写一个值到一个不存在的目标)
即:
int *p=NULL; *p=1;
- malloc 动态分配内存,释放、置空完成后,再使用该指针。
无限递归,导致的堆栈溢出
内存越界(数组越界,变量类型不一致等)
访问不存在的内存地址
比如:
int *p=NULL; *p=1;
访问系统保护的内存地址
访问只读的内存地址
本文作者:kingwzun
本文链接:https://www.cnblogs.com/kingwz/p/15387583.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步