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 回答