我刚刚碰到了下面的代码,这些代码看起来很可疑(详细说明是为了保护无辜者):
std::string MakeString()
{
char buf[12] = { 0 };
return &buf[0];
}
这样还是不安全?是否保证在buf超出范围之前创建std :: string?
答案 0 :(得分:6)
你所写的内容相当于:
std::string MakeString()
{
char buf[12] = { 0 };
return buf;
}
始终保证此代码是安全的。实际上,这种情况与通过复制返回值的任何函数没有太大区别。