While循环中的C++分段故障
C++ Segmentation Fault at While Loop
由于某种原因,我在代码中的while循环中出现了分段错误,以回溯2d矩阵。我尝试添加了许多条件,以确保矩阵永远不会访问未识别的值。这是代码,任何帮助都将不胜感激!
i = sizeA;
j = sizeB;
std::string op[sizeA];
std::string mat = "match ";
std::string del = "delete ";
std::string ins = "insert ";
std::string sub = "substitute ";
int k = sizeA;
bool stop = false;
while (!stop)
{
if ((i == 0) && (j != 0))
{
op[k] = (ins + B[j]);
j = (j - 1);
}
else if ((j == 0) && (i != 0))
{
op[k] = (del + A[i]);
i = (i - 1);
}
else
{
if (smallest(costMatrix[i-1][j], costMatrix[i][j-1], costMatrix[i-1][j-1]) == costMatrix[i-1][j]) //deletion
{
op[k] = (del + A[i]);
i = (i - 1);
}
else if (smallest(costMatrix[i-1][j], costMatrix[i][j-1], costMatrix[i-1][j-1]) == costMatrix[i][j-1]) //insertion
{
op[k] = (ins + B[j]);
j = (j - 1);
}
else //substitution or match
{
if (costMatrix[i-1][j-1] == costMatrix[i][j]) //match
{
op[k] = (mat + A[i]);
}
else //substitution
{
op[k] = (sub + B[j]);
}
i = (i - 1);
j = (j - 1);
}
}
if ((i == 0) && (j == 0))
stop = true;
k = (k - 1);
}
当您在循环的第一次迭代中分配op[k]
时,您有k==sizeA
,但op
是sizeA
的数组,因此这种访问会导致未定义的行为,很可能会导致分段错误。
相关文章:
- 分段故障(堆芯转储)矢量
- 数组的指针从不分段故障
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 分段故障 运行C++代码时出现 SIGSEGV
- 分段故障背包问题
- 分段故障 11,从类函数显示动态 C 字符串
- 面临分段故障 使用 ffmpeg 读取视频时,因为"pFormatCtx-> streams [i]-> codecpar"的地址0x00
- 在C++中,当指向删除和指向不同对象时,分段故障指针
- 分段故障说明
- 分段故障(核心转储)-不知道为什么
- 分段故障线程
- hiredis SET遇到分段故障
- 分段故障,合并排序算法
- 多线程程序中的分段故障和gdb回溯上的不完整信息
- 到达主C++之前分段故障
- 分段故障核心使用 IF流转储
- 使用向量的移动键盘排列(分段故障)
- 在二进制树插入和遍历期间,我得到了分段故障
- 分段故障在类之间返回整数
- C++分段故障BST