之前,针对这个问题也总结过:“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)相关推荐

  1. error: Program received signal SIGSEGV, Segmentation fault. (Codeblocks, C++)

    关于"error: Program received signal SIGSEGV, Segmentation fault.". 之前多次遇到的情况都是:对空指针进行了操作. 比如 ...

  2. 解决Program received signal SIGSEGV, Segmentation fault.的辛酸

    最近写一个算法很简单,涉及到链表的归并,在追求速度的时候,尽最大程度上使用了指针,然而却带来了异常灾难. 编译通过,在debug的时候,我看见了这个.....Program received sign ...

  3. Program received signal SIGSEGV, Segmentation fault.

    GDB调试的时候出现了: Program received signal SIGSEGV, Segmentation fault.(程序收到信号SIGSEGV,分段故障) SIGSEGV:在POSIX ...

  4. dev c++ 中的Program received signal SIGSEGV Segmentation fault

    在编写程序的时候程序不能正确输出结果或者程序无法运行 在debug的时候系统提示 系统提示报错Segmentation fault 从字面上理解 SIGSEGV是是当一个进程执行了一个无效的内存引用, ...

  5. Debug:Program received signal SIGSEGV,Segmentation fault.

    错误描述 最近在用Dev-C++编写程序时,程序能够编译运行,奈何本该接收键盘输入数据的程序,运行之后直接显示"请按任意键继续-"字样结束运行了.调试后发现了报错信息"P ...

  6. Program received signal SIGSEGV, Segmentation fault

    c语言的小问题,纠结了我一会,归总还是自己这块不是太明白. 首先我们先看: int a;//这个是申明了一个int类型的数,实际开辟了一个内存空间给a,a由一个,地址值.接下来你操作a就不会有问题. ...

  7. ros中 指针传递 ros::NodeHandle *node 报received signal SIGSEGV, Segmentation fault

    ros中 指针传递 ros::NodeHandle *node 报错: Thread 1 "currencyChassis" received signal SIGSEGV, Se ...

  8. C++报错signal SIGSEGV, Segmentation fault

    最近在学习链表的时候遇到了一个问题,在以下代码中访问结点s会报signal SIGSEGV, Segmentation fault LNode *p, *s; // p为要插入位置的前驱结点,s为待插 ...

  9. Program terminated with signal SIGSEGV, Segmentation fault.

    问题: 在程序运行时出现了:Segmentation fault (core dumped),分段故障(堆芯转储)也就是段错误. 我首先在一篇博客上面找到如何使用gdb调试: 1.首先使用ulimit ...

最新文章

  1. mysql 连接 查询 连表查询
  2. 小说里的lt什么意思_一般加杠杆是什么意思股市里?答案很简单
  3. 数据中心运营之4P标准化运维规程
  4. java窗口代码_Java系列教程day01——java的搭建环境
  5. erdas叠加显示_ERDAS操作技巧
  6. Python10分钟入门
  7. 设计模式C++学习笔记之十三(Decorator装饰模式)
  8. 应用程序自动更新组件GeneralUpdate3.2.1发布
  9. 应用框架的设计与实现学习手札系列(持续更新)
  10. Thinking In Java 读书笔记
  11. Ubuntu18.04安装Docker并构建JDK1.8镜像
  12. 玩转python字典与列表(下)
  13. 1、redis之安装与配置
  14. 很全的C51库函数(IIC类)(IIC、EEPROM、ADXL、PCF、HMC、L3G、BMP)
  15. mac版python怎么运行_mac 怎么运行python
  16. 30天自制操作系统-3
  17. react大数据量渲染_React大量数据渲染的绝佳解决方案——React虚拟化组件
  18. 使用docker搭建nodebb论坛
  19. 腾讯云轻量应用服务器月流量包用完超额了怎么计费?
  20. 【word操作】论文页眉页脚设置

热门文章

  1. 哪些多年前已从iBoxDB内核中移出的功能
  2. HTML5实现扫描识别二维码/生成二维码
  3. C基础(36——40)
  4. [zz]为小米创建虚拟机路由器
  5. matlab作图显示中文正常,保存图片中文乱码
  6. 《Outlier Analysis》书籍
  7. ubuntu服务器长时间不连接显示器后,连上显示器没反应
  8. vue.js 添加 fastclick的支持
  9. JavaScript中大数相加的解法
  10. 多表查询, 聚集查询和分组查询