0
#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

我在某处错了吗?

4

1 回答 1

7

是的,你错误地认为你可以delete做一些你没有分配的东西。

只有delete你自己new编辑过的东西。不要delete别人的东西。

于 2012-05-11T18:39:20.713 回答