c++的sort出现Segmentation fault (core dumped),该怎么解决

c++的sort出现Segmentation fault (core dumped)
bool s_cmp(const string &s1, const string &s2)
{
return strcmp(s1.c_str(), s2.c_str())<=0;     //<=0: right order; >0: swap
}


main函数中
vector<string>tmp_vec;
sort(tmp_vec.begin(), tmp_vec.end(), s_cmp);

如果tmp_vec不是很长,就不会出错,一旦很长,就会出错

但是不用自定义的s_cmp,则,不管多长都不会出错,到底是为什么呢?
------解决思路----------------------
<= 换成 < 试试
------解决思路----------------------
用小于而不是小于等于

STL中sort比较函数使用的是strict weak order

------解决思路----------------------
楼主:
string可以直接比较,为什么你还要c_str()?