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 ...
最新文章
- ITK:提取矢量图像的分量/通道
- spring技术小结
- 运放放大倍数计算公式_19.运算放大器的特性与应用,不得不掌握的知识点(一)...
- Python中布尔类型
- Vue2.x中的父组件数据传递至子组件
- linux 下的前端编程工具,Prepros Linux版(前端开发工具)
- ArcGIS Server(详细介绍)转
- ORACLE WebLogic Server 安装部署
- 简单说说Java SE、Java EE、Java ME三者之间的区别
- 【无向图求最小割集】
- Git学习使用方法总结(1)
- Java 中获取Exception的详细信息
- linux系统管理之系统优化(连载)
- 区块链报告会心得体会3000_实习心得体会3000字篇【优秀篇】
- Q1财报大超预期,“大象”百度成功“转身”?
- 处女座女的爱情黑暗面 水瓶座男不爱你的表现是什么
- 字节跳动瞄准千亿互联网医疗蓝海,张一鸣想靠AI算法当“药神”?
- Android 注解与注解处理器简述
- SVG 的 foreignObject 标签
- cmos存储器中存放了_CMOS存储器里放哪些东西
热门文章
- php项目技术选型方案,php-现有资源下,项目技术选型求助
- [Python图像处理] 三十七.OpenCV直方图统计两万字详解(掩膜直方图、灰度直方图对比、黑夜白天预测)
- [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论
- 【数据结构与算法】之深入解析“分数到小数”的求解思路与算法示例
- 2018/Province_Java_C/2/猴子分香蕉
- CSS美化滚动条的方法
- Nginx URL 重写
- 1128:图像模糊处理
- 【Qt】Qt数据库驱动层
- 【Linux】一步一步学Linux——cal命令(75)