Где указатель, возвращенный при вызове string::c_str()
, указывает на?
Указывает на некоторое место в памяти, где строка с нулевым символом в конце, содержащая содержимое std::string
, имеет видрасположен.
Указатель действителен только до тех пор, пока std::string
не будет изменен или уничтожен.Он также потенциально недействителен, если вы снова позвоните c_str()
или data()
.
По сути, ваша самая безопасная ставка - предположить, что указатель, полученный из c_str()
, станет недействительным в следующий раз, когда вы сделаете что-то для std::string
object.
Я должен получить недопустимый доступ к памяти.
Нет, вы получаете неопределенное поведение.Вы можете получить какую-либо ошибку доступа к памяти (например, ошибку сегментации), но ваша программа также может работать правильно.Может показаться, что сработает один раз, когда вы запустите свою программу, но в следующий раз произойдет сбой.