我想知道是否void func(const char *str);
参考有效的str
如果我写如下:
auto str = string("hello").c_str();
func(str);
它与下面的代码有何不同?
func(string("hello").c_str())
在这两种情况下,string
对象是临时的,在语句结束时销毁。
在第一种情况下,str
最终悬空 - 指向由临时管理的内存string
,但现在已被摧毁。用它做任何事情都是错误的,会产生未定义的行为。
对于第二种情况,临时string
直到函数返回后才被销毁。所以这没问题,只要函数不保留指针以供以后使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)