【发布时间】:2016-01-19 09:46:47
【问题描述】:
我从this answer 知道字符串文字是静态分配的。但是下面的字符串连接也可以安全使用吗?
void someFunction(std::string& foo) {
functionTakingCString(("start " + foo + " end").c_str());
}
后续问题:如 cmets 中所述,当 functionTakingCString 存储该指针时,这确实是不安全的。在这种情况下,以下内容是否有效:
void someFunction(std::string& foo) {
std::string bar = "start " + foo + " end";
functionTakingCString(bar.c_str());
}
【问题讨论】:
-
只要
functionTakingCString不存储该指针,并且在临时std::string的生命周期之外尝试使用它。 -
感谢您的评论 - 我添加了关于您的建议的后续问题
-
bars 的生命周期无论如何都会在}结束,所以在您的示例中基本上是相同的问题。