std::string getMyString() { return <make a string>; }
...
HANDLE something = OpenSomething(getMyString().c_str(), ...);
我读过 Guaranteed lifetime of temporary in C++并且我相信临时字符串将一直存在到分配被评估之前,即足够长的时间来使这项工作按预期进行。
之前遇到过一次与 std::string
生命周期相关的错误(不记得是什么)我宁愿仔细检查......
最佳答案
临时函数的析构函数直到函数调用返回后才会被调用,所以我们在这里看到的是安全的。
但是如果被调用的函数保存了char*
并且它最终以某种方式被使用 after OpenSomething
有返回,那么这是一个很好的悬挂指针。
关于c++ - 这是对临时 std::string 的正确使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5449368/