Если вы ничего не делаете с name
, это совершенно безопасно.В противном случае, это может произойти сбой в какой-то случайной точке в будущем.Указатель в стиле C, возвращаемый функцией-членом c_str()
, действителен только до тех пор, пока существует временный std::string
(и до тех пор, пока вы не измените его, чего в этом случае нет).Как только выход из области ограждающих блоков выходит, временное уничтожается, и любое использование name
переводит вас в сумеречную зону.
Как и другие предлагали, вы должны превратить name
в std::string
,В качестве альтернативы - если вам действительно нужно, чтобы остаться char *
- вы могли бы просто написать name = strdup(_name)
.