gpt4 book ai didi

c++ - 传递给 std::runtime_error 的 ctor 的字符串对象的生命周期是多少?

转载 作者:太空宇宙 更新时间:2023-11-04 16:02:30 26 4
gpt4 key购买 nike

根据 cppreferences , explicit runtime_error( const std::string& what_arg ); 不会复制 what_arg 的内容。

我能否安全地将临时字符串对象传递到 std::runtime_errorctor 中?

例如:

std::string GetATempString(const char* msg)
{
return { msg };
}

int main()
{
try {
throw std::runtime_error(GetATempString("Hello"));
} catch (const std::runtime_error& e)
{
e.what(); // Is it guaranteed that "Hello" would be returned safely?
}
}

最佳答案

你误会了。 std::runtime_error 总是将字符串复制到引用计数的写时复制内部缓冲区中,因为稍后复制时可能不会抛出异常。

关于c++ - 传递给 std::runtime_error 的 ctor 的字符串对象的生命周期是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41093142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com