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 に答える