Rom*_*kov 5 c++ object-lifetime
std::string getMyString() { return <make a string>; }
...
HANDLE something = OpenSomething(getMyString().c_str(), ...);
Run Code Online (Sandbox Code Playgroud)
我已经读过C++中的临时保证生命周期,并且我相信临时字符串将一直存在,直到评估了赋值,即足够长以使其按预期工作.
有一次遇到与std::string生命有关的错误(不记得是什么)我宁愿仔细检查......
直到函数调用返回后才会调用临时的析构函数,所以我们在这里看到的是安全的.
但是,如果被调用的函数保存char*并且它最终在 OpenSomething返回之后以某种方式被使用,那么这是一个很好的悬空指针.
| 归档时间: |
|
| 查看次数: |
1221 次 |
| 最近记录: |