0

そこで、夏に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またはコマンドラインから生成されたexeを実行したときだけです。

4

1 に答える 1

2

このメソッドの前のどこかで誤ってメモリが解放されたため、クラッシュしたと思います。

于 2012-09-19T02:02:46.343 に答える