Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Корректно ли так использовать c_str() метод |
Автор: zhekha 23.1.2012, 19:27 | ||||
Чем это отличается от следующего?
Утверждается, что в первом случае переданный указатель становится недействительным... |
Автор: newbee 23.1.2012, 19:32 | ||
Некорректно, после выполнения функции строка будет удалена, а указатель, когда-то ей принадлежащий, станет битым. Во втором случае ты возвращаешь указатель на статическую область памяти программы, она будет действительна всегда на протяжении работы программы. Сделай так:
|
Автор: zhekha 23.1.2012, 20:12 | ||
Или, как вариант, возвращать string
Или это тоже некорректно? |
Автор: Michrutka 24.1.2012, 10:32 | ||
zhekha, Во втором случае ты возвращаешь объект std::string, следовательно, будет вызван копирующий конструктор в строчке
то есть при выходе из функции, вызовется копирующий конструктор, значение присвоится переменной version, а потом локальные переменные функции будут уничтожены. Потому все корректно. |
Автор: zhekha 24.1.2012, 17:02 |
Всем спасибо, вопрос исчерпан. |
Автор: bsa 24.1.2012, 17:16 |
Ну так пометь тему решенной |