来自hflip的Segfault

时间:2014-02-05 00:23:14

标签: c++ segmentation-fault flip fault

由于某些原因,当我运行此代码时,我得到一个段错误。它的作用是从输入读取PGM文件并水平翻转它。

以下是我认为有问题的代码:

for (i = pixels.size()-1; i = 0; i--){ // this loop takes the final value of the original vector and puts it into the first spot in the new hflip vector, and continues onwards
    flippy.push_back(pixels[i]);
}

cout << "P2" << endl << numColumns << " " << numRows << endl << "255" << endl;
while (p < pixTotal){
    for (int z = 0; z < numRows; z++){
        cout << flippy[p] << " ";
    }
    cout << endl;
    p++;

}

2 个答案:

答案 0 :(得分:1)

你有

  

for(i = pixels.size() - 1; i = 0; i - )

中间应该是

  

I&GT; = 0

不是

  

I = 0

答案 1 :(得分:0)

我假设向量pixels代表矩阵中的每一行。然后要翻转向量中的所有值,您只需使用std::reverse_copy,如下所示:

std::vector<uint8_t> flippy;
flippy.resize(pixels.size());
std::reverse_copy(pixels.begin(), pixels.end(), flippy.begin());

您需要为每一行执行此操作。然后,您可以在每次反转后输出每个翻转的行,以便矢量'flippy'仅表示当前正在运行的行。