Я программист на Java, я новичок в C++, и недавно я пишу код на C++. Я немного запутался в жизни объекта C++. (В Java есть GC, и мне не нужно беспокоиться об этой проблеме)время жизни объекта C++, определенного внутри функции
Вот мой вопрос. Предположим, у меня есть функция()
char *f() {
string a = "Hello";
return a.c_str();
}
Будет ли этот код быть действительно, моя путаница, что время жизни натянуть объявленной внутри F, будет GC-эд когда е возвращение? Могу ли я полагаться на возвращаемое значение a.c_str(), чтобы быть правильным вне f?
В C++ нет сборки мусора. –
* Могу ли я полагаться на возвращаемое значение a.c_str(), чтобы быть правильным вне f? * № –
Нет необходимости использовать C-style 'char *'. Ваша проблема полностью исчезает, если вы просто возвращаете 'std :: string', который правильно управляет ее содержимым. Если вам нужно передать символ 'char *', используйте' c_str' как можно ближе к нему. И, кстати, 'c_str' дает вам' const char * ', поэтому попытка игнорировать его constness не работает. – chris