对于下面的部分代码,在vs2010的windows平台下提示数组越界(编译通过,执行exe提示)但是在深度linux下的codeblock正常。

        //第一种形式
   /*Vector <OutLineHand>  outline(filterContours.size()+1);
    for(size_t  i = 0; i < filterContours.size(); i ++)
    {
        OutLineHand(filterContours[i],nframe);
        outline[i] = OutLineHand(filterContours[i],nframe);
    }*/
       //第二种形式
    Vector <OutLineHand>  outline;
    for(int i = 0; i < (int)filterContours.size(); i ++)
    {
        outline.push_back(OutLineHand(filterContours[i],nframe));

    }

1.OutLineHand是一个自定义封装的轮廓类,包含数据成员和成员函数。
2.filterContours是vector< vector > 类型,图像处理中的轮廓(点的集合)。
3.OutLineHand是一个自定义封装的轮廓类的构造函数,我断点调试执行到
    outline[i] = OutLineHand(filterContours[i],nframe);这句就提示越界。

有谁遇到这种问题,请指教。谢谢!

Logo

更多推荐