循环后出现分段故障
Segmentation fault after a loop
我遇到了分段故障。rayonBends和largeurFlotteur1被宣布为我班的公开替身。这是我的代码:
qDebug()<<largeurFlotteur1; //1.35
qDebug()<<rayonBends; //0.699
k=0;
int j=0;
double alpha;
double offsetDebut;
double offsetFin;
double r=0;
double tabPos[nbFlotteur1][4];
for(int i=0;i<nbSegments;i++)
{
if((coordonnees[i+1][0]-coordonnees[i][0])==0)
{
alpha=M_PI/2;
}
else
{
alpha=atan((coordonnees[i+1][1]-coordonnees[i][1])/(coordonnees[i+1][0]-coordonnees[i][0]));
}
if(i==0)
{
offsetDebut=3+largeurFlotteur1/2;
}
else
{
offsetDebut=rayonBends+largeurFlotteur1/2;
}
if(i==(nbSegments-1))
{
offsetFin=3+largeurFlotteur1/2;
}
else
{
offsetFin=rayonBends+largeurFlotteur1/2;
}
j=0;
do
{
r=j*precision+offsetDebut;
tabPos[k][0]=k;
tabPos[k][1]=i;
tabPos[k][2]=r*cos(alpha);
tabPos[k][3]=r*cos(alpha);
k=k+1;
j=j+1;
}
while (r<(segments[i]-offsetFin)) ;
}
qDebug()<<largeurFlotteur1; //Segmentation fault
qDebug()<<rayonBends; //Segmentation fault
我得到:
1.35
0.699
然后在最后对两个qDebug进行分段故障。发生了什么?循环是否重置这些变量?我不明白。谢谢你的帮助。
您确定到达coordonnees[nbSegments]
的值coordonnees[i+1]
没有越界吗?
尝试将for更改为for(int i=0;i<nbSegments-1;i++)
,看看segfault是否消失!
注意:qDebug cat not segfault bc u not unname指针。您的调试器可能显示编译器优化的错误bc,请尝试使用-O0
编译密钥禁用它。
相关文章:
- 分段故障(堆芯转储)矢量
- 数组的指针从不分段故障
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 分段故障 运行C++代码时出现 SIGSEGV
- 分段故障背包问题
- 分段故障 11,从类函数显示动态 C 字符串
- 面临分段故障 使用 ffmpeg 读取视频时,因为"pFormatCtx-> streams [i]-> codecpar"的地址0x00
- 在C++中,当指向删除和指向不同对象时,分段故障指针
- 分段故障说明
- 分段故障(核心转储)-不知道为什么
- 分段故障线程
- hiredis SET遇到分段故障
- 分段故障,合并排序算法
- 多线程程序中的分段故障和gdb回溯上的不完整信息
- 到达主C++之前分段故障
- 分段故障核心使用 IF流转储
- 使用向量的移动键盘排列(分段故障)
- 在二进制树插入和遍历期间,我得到了分段故障
- 分段故障在类之间返回整数
- C++分段故障BST