У меня есть функция, которая принимает (char * const *). Данные, которые я предоставляю, находятся в std :: string. Итак, я делаю это:
void blahblah(std::string str)
{
const char * cc = str.c_str();
ConstCharFunction(&cc);
}
Это хорошо работает. Мой вопрос заключается в том, нужно ли мне очистить память, используемую const char ala:
delete cc;
Или cc — это просто указатель на папку mem в std: string …
Это указатель на память, выделенную в std :: string. Когда std :: string выходит из области видимости, память освобождается. Будьте уверены, чтобы не удерживать указатель после этого!
Нет тебе не нужно delete cc
, Это действительно указатель, удерживаемый std::string
объект.
Увидеть Вот
Программа не должна изменять какие-либо символы в этой последовательности.
Возвращенный указатель указывает на внутренний массив, используемый в настоящее время строковым объектом для хранения символов, соответствующих его значению.
Просто будьте осторожны, так как указатель возвращается c_str()
можно сделать недействительным, вызвав модифицирующие методы строки.