Запрос относительно 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() будет служить функцией распределения.

Другие вопросы по тегам