Запрос относительно ostrstream
Прежде всего, я хотел бы сообщить всем, что ostrstream устарел и не должен использоваться в будущем.
но моё сомнение это нечто другое. исходный код моего приложения имеет код, как показано ниже.
ostrstream o;
o << cell.value(CI) << "-" << cell.value(LAC) << "-" << cell.value(MNC)
<< "-" << cell.value(MCC) << ends;
char* tmp = o.str();
cgi = tmp;
delete [] tmp;
строка кода, которая меня интересует, является последней строкой. мы должны удалить указатель в этом случае. это выглядит довольно неловко для меня. нет распределения памяти вручную. Я думаю, правильно?
1 ответ
Решение
Указатель по-прежнему принадлежит ostrstream
, Распределение это по ошибке.
Это может быть правильно, если документация для ostrstream::str()
сказал, что право собственности передается, в этом случае, str()
будет служить функцией распределения.