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()”的函数堆栈何时被展开? 我问这个是因为我团队中的一些天才写了这种类型的“getstr()”函数.并且不知何故系统没有崩溃. 我的理解是,只要评估该参数,函数“getstr()”的堆栈就会被取消.但如果确实如此,那么代码就会崩溃而且不会发生. 有人可以帮助我c标准吗? 解决方法
在gettr返回之前,s被销毁. gettr返回的指针是悬空的.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |