我只是碰到了下面的代码,看起来像我一样腥(详细遗漏以保护无辜者):
std::string MakeString()
{
char buf[12] = { 0 };
return &buf[0];
}
Run Code Online (Sandbox Code Playgroud)
这样可以还是不安全?是否保证在buf超出范围之前创建std :: string?
你写的相当于:
std::string MakeString()
{
char buf[12] = { 0 };
return buf;
}
Run Code Online (Sandbox Code Playgroud)
并始终保证此代码是安全的.实际上,这种情况与通过复制返回值的任何函数没有太大区别.
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |