error: Program received signal SIGSEGV, Segmentation fault. (Codeblocks, C++)(2)
之前,针对这个问题也总结过:“error: Program received signal SIGSEGV, Segmentation fault. (Codeblocks, C++)”
http://blog.csdn.net/libing_zeng/article/details/55684405
之前的结论是:问题出现的原因是“对空指针进行了操作”。
这个结论是着实不严谨。在这里,再次总结一下。
为什么会出现这个错误?
原因是:对“无效指针”进行了操作。
根据,遇到过的问题,经验得知:
导致段错误的“无效指针”有两种:
第一种:指针没有初始化。
比如:
material_ptr->shade(sr)
若material_ptr为空指针(或者对应的指针并不是“指向某拥有shade()成员方法的对象”的指针),则可能报这个错误。
这种情况的问题,比较好查。直接看对应的指针就可以。因为这种无效的指针一般都是一些奇奇怪怪、异常的指针。
问题解决办法:对指针进行初始化。
第二种:指针所指向的对象已经被delete。
比如:
如果有两个类中同时用到某个类的指针。如下方的World类和AreaLight类同时用到Rectangle类的指针。
在析构时就容易出问题。如下方,如果World的析构函数删除了Rectangle指针指向的对象之后,AreaLight的析构函数再来删除Rectangle指针指向的对象时就会报“Segmentation fault.”。
这种情况的问题查起来有点困难,因为对应的指针是一个正常的指针,只是该指针所指向的对象已经被删除。
由于是正常指针,所以if(object_ptr)根本不起作用。
问题解决办法:在后一个类(上面是AreaLight)的析构函数中不要在做delete的操作了。
error: Program received signal SIGSEGV, Segmentation fault. (Codeblocks, C++)(2)相关推荐
- error: Program received signal SIGSEGV, Segmentation fault. (Codeblocks, C++)
关于"error: Program received signal SIGSEGV, Segmentation fault.". 之前多次遇到的情况都是:对空指针进行了操作. 比如 ...
- 解决Program received signal SIGSEGV, Segmentation fault.的辛酸
最近写一个算法很简单,涉及到链表的归并,在追求速度的时候,尽最大程度上使用了指针,然而却带来了异常灾难. 编译通过,在debug的时候,我看见了这个.....Program received sign ...
- Program received signal SIGSEGV, Segmentation fault.
GDB调试的时候出现了: Program received signal SIGSEGV, Segmentation fault.(程序收到信号SIGSEGV,分段故障) SIGSEGV:在POSIX ...
- dev c++ 中的Program received signal SIGSEGV Segmentation fault
在编写程序的时候程序不能正确输出结果或者程序无法运行 在debug的时候系统提示 系统提示报错Segmentation fault 从字面上理解 SIGSEGV是是当一个进程执行了一个无效的内存引用, ...
- Debug:Program received signal SIGSEGV,Segmentation fault.
错误描述 最近在用Dev-C++编写程序时,程序能够编译运行,奈何本该接收键盘输入数据的程序,运行之后直接显示"请按任意键继续-"字样结束运行了.调试后发现了报错信息"P ...
- Program received signal SIGSEGV, Segmentation fault
c语言的小问题,纠结了我一会,归总还是自己这块不是太明白. 首先我们先看: int a;//这个是申明了一个int类型的数,实际开辟了一个内存空间给a,a由一个,地址值.接下来你操作a就不会有问题. ...
- ros中 指针传递 ros::NodeHandle *node 报received signal SIGSEGV, Segmentation fault
ros中 指针传递 ros::NodeHandle *node 报错: Thread 1 "currencyChassis" received signal SIGSEGV, Se ...
- C++报错signal SIGSEGV, Segmentation fault
最近在学习链表的时候遇到了一个问题,在以下代码中访问结点s会报signal SIGSEGV, Segmentation fault LNode *p, *s; // p为要插入位置的前驱结点,s为待插 ...
- Program terminated with signal SIGSEGV, Segmentation fault.
问题: 在程序运行时出现了:Segmentation fault (core dumped),分段故障(堆芯转储)也就是段错误. 我首先在一篇博客上面找到如何使用gdb调试: 1.首先使用ulimit ...
最新文章
- mysql 连接 查询 连表查询
- 小说里的lt什么意思_一般加杠杆是什么意思股市里?答案很简单
- 数据中心运营之4P标准化运维规程
- java窗口代码_Java系列教程day01——java的搭建环境
- erdas叠加显示_ERDAS操作技巧
- Python10分钟入门
- 设计模式C++学习笔记之十三(Decorator装饰模式)
- 应用程序自动更新组件GeneralUpdate3.2.1发布
- 应用框架的设计与实现学习手札系列(持续更新)
- Thinking In Java 读书笔记
- Ubuntu18.04安装Docker并构建JDK1.8镜像
- 玩转python字典与列表(下)
- 1、redis之安装与配置
- 很全的C51库函数(IIC类)(IIC、EEPROM、ADXL、PCF、HMC、L3G、BMP)
- mac版python怎么运行_mac 怎么运行python
- 30天自制操作系统-3
- react大数据量渲染_React大量数据渲染的绝佳解决方案——React虚拟化组件
- 使用docker搭建nodebb论坛
- 腾讯云轻量应用服务器月流量包用完超额了怎么计费?
- 【word操作】论文页眉页脚设置