gpt4 book ai didi

C++ 临时字符串生命周期

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:36:24 24 4
gpt4 key购买 nike

抱歉,我知道存在类似的问题,但我仍然不完全清楚。以下安全吗?

void copyStr(const char* s)
{
strcpy(otherVar, s);
}

std::string getStr()
{
return "foo";
}

main()
{
copyStr(getStr().c_str());
}

临时 std::string 将存储 getStr() 的返回值,但它是否存在足够长的时间让我将其 C 字符串复制到别处?或者我必须明确地为它保留一个变量,例如

std::string temp = getStr();
copyStr(temp.c_str());

最佳答案

是的,这是安全的。 getStr 中的临时值一直存在到它出现的完整表达式的末尾。该完整表达式是 copyStr 调用,因此它必须在 getStr 中的临时值之前返回 被销毁。这对你来说绰绰有余。

关于C++ 临时字符串生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24488122/

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