#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
Я где-то ошибся?
std::string
. Если вы это понимаете, тогда вы поймете, что вам не нужно вызыватьdelete
ни для чего здесь. Учитывая, что это концепция более высокого уровня, чем то, о чем просит ОП, но если вы собираетесь использоватьstring
,vector
и т. д., вы должны понимать, что происходит за кулисами. - person Ed S.   schedule 11.05.2012string
илиvector
, чтобы понять, чтоdelete
ингtmpstr.rdbuf();
— это плохо. - person John Dibling   schedule 11.05.2012