c++ Segmentation fault (core dumped) 的一个实例
说明:找到vector前一半元素中等于some_val的那些,然后在这些元素的前面插入它的2倍。
#include <iostream>
#include <string>
#include <vector>
using namespace std;#define LENGTH 10
typedef int TYPE;
typedef vector<TYPE> VECTORTYPE;void print(VECTORTYPE & );int main()
{vector<int> vint{0,1,2,3,4,5,6,6,7,7,8,8,9,10,11,12,12};vector<int>::iterator iter = vint.begin();vector<int>::iterator mid = vint.begin() + vint.size() / 2;int some_val = 6;while(iter != mid){if(*iter == some_val){iter = vint.insert(iter,2 * some_val);++iter;++ iter;++ mid;}else{++ iter;}}// print(vint); return 0;
}
void print(VECTORTYPE &vec)
{for(VECTORTYPE::iterator i = vec.begin() ; i != vec.end() ; ++i){ cout << *i << " ";}cout << endl;return ;
}
运行结果是: r@r-Sys:~/c++/9/review2$ ./123
Segmentation fault (core dumped)
说明迭代器迭代过程中可能越界。检查发现,程序中每次插入元素后,mid就失效了,不能使用了。这是错误点。改正如下:
#include <iostream>
#include <string>
#include <vector>
using namespace std;#define LENGTH 10
typedef int TYPE;
typedef vector<TYPE> VECTORTYPE;void print(VECTORTYPE & );int main()
{vector<int> vint{0,1,2,3,4,5};vector<int>::iterator iter = vint.begin();vector<int>::iterator mid = vint.begin() + vint.size() / 2;int some_val = 2;cout << "mid element is:" << *mid << endl;int cnt = 0;while(iter != mid){if(*iter == some_val)h{iter = vint.insert(iter,2 * some_val);++iter;++ iter;++ cnt;
//每次插入元素后,mid失效,必须重新计算mid,插入几个元素就加几mid = vint.begin() + vint.size() / 2 + cnt;}else{++ iter;}}print(vint); return 0;
}
void print(VECTORTYPE &vec)
{for(VECTORTYPE::iterator i = vec.begin() ; i != vec.end() ; ++i){ cout << *i << " ";}cout << endl;return ;
}
c++ Segmentation fault (core dumped) 的一个实例相关推荐
- Segmentation fault (core dumped) -llinux系统内存错误报错信息
目录 1 问题原因 (1)内存访问越界 (2)多线程程序使用了线程不安全的函数. (3)多线程读写的数据未加锁保护. (5)堆栈溢出. 2 使用GDB查看core文件 3 使用GDB调试程序 返回目录 ...
- labelImg(pyqt4 )出现错误(segmentation fault(core dumped) )
在配置labelImg的过程中,最后执行时候出现了一个错误segmentation fault(core dumped) . 解决方法: 将安装的pyqt4的版本从4.11.4降到4.11.3版本,会 ...
- mysql core dumped_关于Segmentation fault (core dumped)几个简单问题的整理
有的程序可以通过编译,但在运行时会出现Segment fault(段错误).这通常都是指针错误引起的.但这不像编译错误一样会提示到文件一行,而是没有任何信息.一种办法是用gdb的step, 一步一步寻 ...
- 【ARM】程序快速定位segmentation fault core dumped错误
1.应用场景 ARM开发过程中经常进程运行着出现段错误,这时候单纯靠加日志打log效率太低.使用gdb的话,由于APP进程太多,生成的core的文件特别大,而且gdb在arm板子也不好单步调试,不太友 ...
- dmrman恢复数据报错Segmentation fault (core dumped)
达梦技术社区:https://eco.dameng.com [场景说明] 使用dmrman恢复数据库,但是这种报错不限于DM数据库场景,其他应用也可能出现 [报错信息] Segmentation fa ...
- Segmentation fault (core dumped) 和double free or corruption (out)Aborted (core dumped)
代码链接:GitHub - gaoxiang12/slambookContribute to gaoxiang12/slambook development by creating an accoun ...
- python遇到Segmentation fault (core dumped)调试方法
python3执行某一个程序时,报Segmentation fault (core dumped)错,但没有告知到底哪里出错,无法查问题 同时在根目录下生成core文件,典型的可以用gdb进行调试.这 ...
- Sampler 在数据下沉模式超时; 不同Sampler策略,在非数据下沉模式下,模型训练失败 报错Segmentation fault(core dumped)
环境版本 mindspore-ascend 1.7.1 背景 我在使用自定义Sampler策略,对imagenet1K数据集进行采样,进行ResNet50训练. Sampler代码如下: class ...
- 【QA】Python代码调试之解决Segmentation fault (core dumped)问题
Python代码调试之解决Segmentation fault 问题 问题描述 排查过程 1. 定位错误, 2. 解决办法 参考资料 问题描述 Python3执行某一个程序时,报Segmentatio ...
最新文章
- 用 Flask 来写个轻博客 (9) — M(V)C_Jinja 语法基础快速概览
- C六:指针可以比较大小
- python图像处理专业博客
- python狗图像识别_TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
- php yaf.dll,windows下配置nginx+php+yaf的环境
- java大整数_java处理大整数
- python软件源 临时使用清华源
- Java革新大提速 Chrome 54终结YouTube的Flash内嵌技术
- 【EMNLP2020】Cross-Thought句子表示预训练
- java arraylist_Java 集合框架之 ArrayList 源码图示法简要剖析
- 渗透测试/应急演练过程中metasploit制作木马连接失败问题排查
- sublime text3怎么运行python代码_Sublime Text3配置在可交互环境下运行python快捷键
- Excel基本操作方法
- 论文阅读_Show, Attend and Tell: Netural Image Caption Generation with Visual Attention
- 【第五篇】Maven系列教程-聚合工程
- 现流行的九大前端框架
- 【Echarts】- 制作饼图
- 罗切斯特大学计算机科学硕士介绍,罗切斯特大学研究生计算机科学专业介绍
- 近50年前500部精品电影合集
- Android——待办事项(ToDoList)
热门文章
- SRM 591 div1 275
- WebKit 与 V8 的关系
- 设计模式-单件模式(Singleton pattern)
- [导入].Net2.0 使用ConfigurationManager读写配置文件
- 全国大学生电子设计大赛 赛前准备
- Partial Sums ZOJ - 1569
- ROS(12):双足机器人开发调研
- 【Linux】一步一步学Linux——indent命令(262)
- 【Android】Intent介绍及Intent在Activity中的使用方法
- mysql分片库分页查询_mysql数据库分页查询优化