#include <iostream>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <string>

using namespace std;

int main()
{
    ostringstream out;
    ostringstream tmpstr;
    tmpstr << "ritesh is here";
    out << tmpstr.str().c_str();
    out << endl;
    cout << out.str();
    if(tmpstr.rdbuf()!=NULL)
        cout << "tmpstr not null" <<endl;
    else
        cout << "tmpstr null" <<endl;
    delete tmpstr.rdbuf();   // This line gives me segmentation fault
    cout <<"deleted" << endl;
}


delete tmpstr.rdbuf();行给出了分段错误。我猜rdbuf返回char *指针,因此。我可以在其上使用删除来释放分配给tmpstr的内存空间

我在某处错了吗?

最佳答案

是的,您认为可以delete未分配的内容是错误的。

您只有delete个已自己完成的事情。不要new别人的东西。

关于c++ - 为什么删除我的代码中的ostringstream对象会导致段错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10556808/

10-13 08:27