轉(zhuǎn)載:http://blog.csdn.net/stpeace/article/details/51040218#cpp
看看如下代碼的一個非常隱晦的錯誤, 雖然不會每次core dump, 但類似代碼遲早會core dump, 好多人遇到過。 此問題極難定位, 看一下吧:
[cpp]?view plaincopy
#include?<iostream>?? #include?<vector>?? #include?<algorithm>?? using?namespace?std;?? ?? struct?Msg??? {?? ????int?id;?? ????int?score;?? };?? ?? bool?selfDefinedSort1(?const?Msg?&m1,?const?Msg?&m2)?? {?? ????if(m1.id?>?m2.id)?? ????{?? ????????return?false;?? ????}?? ?????? ????return?true;?? }?? ?? void?addToVector(vector<Msg>?&?vecMsg,?const?int?&id,?const?int?&score)?? {?? ????Msg?msg;?? ????msg.id?=?id;?? ????msg.score?=?score;?? ????vecMsg.push_back(msg);?? }?? ?? void?printVector(vector<Msg>?&vecMsg)?? {?? ????for(vector<Msg>::iterator?it?=?vecMsg.begin()?;?it?!=?vecMsg.end()?;?it++?)?? ????{?? ????????cout?<<?it->id?<<?'\t'?<<?it->score?<<?endl;?? ????}?? }?? ?? ?? int?main()?? {?? ????vector<Msg>?vecMsg;?? ????addToVector(vecMsg,9,?100);?? ????addToVector(vecMsg,8,?87);?? ????addToVector(vecMsg,6,?90);?? ????addToVector(vecMsg,6,?82);?? ????addToVector(vecMsg,5,?85);?? ?? ????cout?<<?"before?Sort:"?<<?endl;?? ????printVector(vecMsg);?? ?? ????cout?<<?"after?Sort1:"?<<?endl;?? ????sort(vecMsg.begin(),?vecMsg.end(),?selfDefinedSort1);?? ????printVector(vecMsg);?? ?? ????return?0;?? }??
? ? ? ?如果肉眼能看出問題, 那說明確實有點水平, 如果看不出問題, 那也正常, 請看題目。
總結(jié)
以上是生活随笔為你收集整理的火眼睛睛查coredump(stl sort)------永远让比较函数对相同元素返回false的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。