结束该计划时的Sigsegv / sigabrt

时间:2016-01-22 20:59:02

标签: c++ sfml stdvector sigabrt sigsegv

每当我关闭它时,我的程序上都会出现一个sigsegv / sigabrt(使用alt + f4时关闭sigsev,使用窗口按钮关闭时使用sMLabrt [使用SFML])

注释移动(〜)的调用将导致程序的正常退出

for(unsigned char i = static_cast<unsigned char>(duckies.size()); i > 0 ; i--){ 
    if(duckies[i].coordinates != duckies[i - 1].coordinates)
        duckies[i].move(duckies[i - 1].direction);
}

鸭子是Ducky的std :: vector,移动(〜)是

void Ducky::move(Direction new_dir){
    direction = new_dir;
    switch(direction){
        case UP:
            --coordinates.y;
            break;
        case DOWN:
            ++coordinates.y;
            break;
        case LEFT:
            --coordinates.x;
            break;
        case RIGHT:
            ++coordinates.x;
            break;
        default:
            break;
    }
}

(Direction是枚举,坐标是2 int)

请注意,此函数在程序执行期间调用,而不是在退出时调用。

如果您对导致该错误的原因有任何想法,请告诉我:)。 如果你需要的话,我可以添加一个github仓库的链接,但我不是要你读所有的代码,因为它没有很好的记录〜

提前致谢:)

0 个答案:

没有答案