Итак, я написал реализацию ArrayList летом, и у меня есть метод toString, в котором я использую объект ostringstream для привязки к строкам, а затем выводю их.
метод ниже:
template<class T>
std::string ArrayList<T>::toString() {
std::ostringstream streamOut;
streamOut << "(";
for (int i = 0; i < size; i++) {
streamOut << array[i];
if (i != (size - 1)) {
streamOut << ", ";
}
}
streamOut << ")\n";
std::string returnString = streamOut.str();
return returnString;
}
Проблема в том, что когда я запускаю эту программу, она иногда вылетает в строке описанным выше способом:
streamOut << "(";
В конце я попытался добавить выражение flush, но это не помогло … Я действительно понятия не имею, что здесь может быть не так.
Я думаю, что эта проблема может быть связана, но я не уверен …
https://stackoverflow.com/questions/8250851/big-ostringstream-causes-application-crash
РЕДАКТИРОВАТЬ:
Я забыл упомянуть, что я использую Eclipse для разработки, и я не смог получить аварийное завершение программы, когда я запускаю ее в Eclipse. Только когда я запускаю исполняемый файл, сгенерированный через Windows или командную строку, он падает
Я думаю, что это потерпело крах, потому что где-то перед этим методом неправильно освобождалась память.
Других решений пока нет …