当前位置:  开发笔记 > 编程语言 > 正文

调用临时对象的方法是否安全?

如何解决《调用临时对象的方法是否安全?》经验,为你挑选了2个好方法。

我有一个函数,它将返回一个char*.由于我必须连接一些字符串,我写了以下行:

std::string other_text;
// ...
func(("text" + other_text).c_str());

我知道我可以避免命名我想要使用的字符串的问题.我只是想借此机会提出一个更普遍的问题:调用临时变量的方法是否安全?它符合标准吗?



1> Brian R. Bon..:

调用临时变量的方法是安全的,但是不能安全地返回临时变量的char*以供以后使用.

这个char*指向一个即将被释放的缓冲区.一旦它被释放,你将有一个指向内存中无效区域的指针.

相反,请返回一个std :: string对象.



2> j_random_hac..:

你可以调用temporaries上的方法,但是你必须要小心对象的生命周期 - 特别是,如果你有一个函数返回c_str()一个临时调用的函数std::string,那么当函数返回时该字符串对象将被销毁.

您上面的代码遇到了这个问题.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有