Vector::擦除分段故障
Vector:: erase segmentation fault
我在这段代码中出现了分段错误,我无法了解原因:
vector <double> *point;
for (int i = 0; i < point->size(); i += 3) {
for (int j = i + 3; j < point->size(); j += 3) {
if (distance((*point)[i], (*point)[i + 1],(*point)[i + 2], (*point)[j],(*point)[j + 1], (*point)[j + 2]) < treshold){
point->erase(point->begin() + j, point->begin() + j * 3);
j -= 3;
}
}
}
point是点的坐标向量,类似于(x1,y1,z1,x2,y2,z3,…,xn,yn,zn)。距离它是一个计算给定6坐标的2个点之间的欧氏距离的函数。基本上,我会做一些类似"如果两个点离得太近,删除其中一个"的事情。但我有分段错误。知道吗?
erase
行错误。你有j * 3
,而你的意思可能是j + 3
。
vector <double> *point;
声明了一个未初始化的指针,您尝试使用point->size()
访问该指针。
因此,未定义的行为&撞车事故。
我会选择一个简单的对象,而不是
vector <double> point;
或者,如果必须使用动态内存:
vector <double> *point = new vector<double>;
相关文章:
- 分段故障(堆芯转储)矢量
- 数组的指针从不分段故障
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 分段故障 运行C++代码时出现 SIGSEGV
- 分段故障背包问题
- 分段故障 11,从类函数显示动态 C 字符串
- 面临分段故障 使用 ffmpeg 读取视频时,因为"pFormatCtx-> streams [i]-> codecpar"的地址0x00
- 在C++中,当指向删除和指向不同对象时,分段故障指针
- 对程序故障进行分段
- 分段故障说明
- 分段故障(核心转储)-不知道为什么
- 分段故障线程
- hiredis SET遇到分段故障
- 分段故障,合并排序算法
- 多线程程序中的分段故障和gdb回溯上的不完整信息
- 到达主C++之前分段故障
- 分段故障核心使用 IF流转储
- 使用向量的移动键盘排列(分段故障)
- 在二进制树插入和遍历期间,我得到了分段故障
- 分段故障在类之间返回整数