std :: cout分段错误

时间:2013-09-08 15:45:14

标签: c++ segmentation-fault cout

是否有任何理由过度使用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太多次导致这个问题?

0 个答案:

没有答案