加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 参数功能的功能堆栈什么时候展开?

发布时间:2020-12-16 07:15:15 所属栏目:百科 来源:网络整理
导读:假设我有两个功能,一个像: const char* getstr(){ std::string s = "somestring"; return s.c_str();} 第二个像: void func(int x,const char* str){ std::cout "x="x ",str=" strstd::endl;} 现在假设’func()’有类似的东西 func(100,getstr()); 我的问
假设我有两个功能,一个像:

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返回的指针是悬空的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读