假设我有两个功能,一个像:
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标准吗?
最佳答案 在gettr返回之前,s被销毁. gettr返回的指针是悬空的.