假设我有两个函数,其中一个是:
const char* getstr()
{
std::string s = "somestring";
return s.c_str();
}
第二个赞:
void func(int x, const char* str)
{
std::cout <<"x="<<x <<", str=" <<str<<std::endl;
}
现在假设'func()'有类似的东西
func(100,getstr());
我的问题是函数“getstr()”的函数堆栈何时展开? 在执行“func()”的主体之后还是主体执行之前?
我问这个是因为我团队中的一些天才编写了这种类型的“getstr()”函数。并且不知何故系统没有崩溃。
我的理解是函数“getstr()”的堆栈将在评估该参数后立即展开。但如果那是真的,代码就会崩溃,但它不会发生。
谁能帮我看看 c++ 标准是怎么说的?
最佳答案
s
在 getstr
返回之前被销毁。 getstr
返回的指针悬空。
关于c++ - 参数函数的函数栈什么时候展开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34781094/