У меня есть некоторые пробелы в понимании метода string::assign
. Рассмотрим следующий код:
char* c = new char[38];
strcpy(c, "All your base are belong to us!");
std::string s;
s.assign(c, 38);
Выделяет ли s.assign
новый буфер и копирует в него строку или предполагает владение указателем; то есть не выделяет новую память и напрямую использует мой адрес. Если он копирует, то в чем разница между assign
и operator=
? Если он не копирует, то освобождает ли он память, или это моя ответственность?
Спасибо.