C++ 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出?
我有正确工作的代码:C++ 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出?,c++,string,visual-studio,visual-c++,C++,String,Visual Studio,Visual C++,我有正确工作的代码: #include <iostream> std::string func() { return "string"; } int main() { std::string str = func(); std::cout << str << std::endl; return 0; } #包括 std::string func() { 返回“字符串”; } int main() { std::string
#include <iostream>
std::string func()
{
return "string";
}
int main()
{
std::string str = func();
std::cout << str << std::endl;
return 0;
}
#包括
std::string func()
{
返回“字符串”;
}
int main()
{
std::string str=func();
好吧,你的第二个例子是未定义的行为,由于访问了释放的内存。任何事情都可能发生
func()
返回一个临时的std::string
,其生存期在完整表达式结束时结束,将c
变成一个悬空指针:
const char* c = func().c_str();
禁止使用悬挂指针,尤其是取消引用:
std::cout << c << std::endl;
std::cout好吧,第二个例子是未定义的行为,因为访问了释放的内存。任何事情都可能发生
func()
返回一个临时的std::string
,其生存期在完整表达式结束时结束,将c
变成一个悬空指针:
const char* c = func().c_str();
禁止使用悬挂指针,尤其是取消引用:
std::cout << c << std::endl;
std::cout