Sloppy's Blog

std::sort元素相等导致crash

最近项目里碰到一个奇怪的问题。在某些特定的服务器上,执行某段代码,会突然Crash,代码没有动过,查了半天。原来是std::sort搞出的问题,因为之前返回的元素从来没有相等的情况,所以没有出现过Crash,STD的sort,如果出现两个相等的元素返回true,会导致越界行为

std::vector list = {2,1,1,3,};
std::sort(list.begin(), list.end(), [](int a,int b){
    if (a == b){// 这地方
        return true;
    }
    return a > b;
});