是否有任何理由过度使用cout
会导致细分错误。
一段迭代遍历矩阵的代码,然后可能再次递归遍历矩阵的某些部分,包含以下行:
matrix matrix::topLevelFunction( void )
{
for (int i=1; i<NRows-1; i++)
{
cout << "\rRow = " << i+1 << " / " << NRows << " " << flush;
for (int j=1; j<NCols-1; j++)
{
recursiveFunction(i, j)
}
}
}
void matrix::recursiveFunction(int i, int j)
{
double min;
if (i == 0 || j == 0 || i == NRows-1 || j == NCols-1)
{ }
else
{
min = data[i][j] + 10;
for (int row = -1; row <= 1; ++ row)
{
for (int col = -1; col <= 1; ++ col)
{
if (row != 0 && col != 0 && data[i+row][j+row] < min)
min = data[i+row][j+col];
}
}
if (data[i][j] <= min)
{
data[i][j] = min + 0.0001;
for (int row = -1; row <= 1; ++ row)
{
for (int col = -1; col <= 1; ++ col)
{
if (row != 0 && col != 0)
recursiveFunction(i + row, j + col);
}
}
}
}
}
当留下cout
时,函数seg会在一定数量的行之后出现故障(〜100取决于它运行的系统),没有它就会运行完成。
冲洗stdout太多次导致这个问题?