請考慮下面的代碼:C++的std :: vector的內存設計缺陷,確定使用相剋pop_back()當++
vector<int> myVector;
myVector.push_back(10);
myVector.erase(myVector.end());
此代碼編譯,並在Windows(VisualStudio中),但結果運行良好在使用g ++編譯時,在Linux上的segfault中。用pop_back替換擦除解決了Linux上的問題。
有誰知道爲什麼這兩個平臺上的行爲不同,以及要考慮哪些行爲是正確的。
在此先感謝!
更優雅的恕我直言:`myVector.erase(myVector.rbegin());`,+1順便說一句。 – AraK 2011-01-12 21:04:25