gpt4 book ai didi

c++ - 返回 C++ std::string 对象是否可以避免内存泄漏?

转载 作者:IT老高 更新时间:2023-10-28 23:12:01 25 4
gpt4 key购买 nike

我对 C++ 的字符串相当陌生,所以下面的模式可能有点难看。在开始使用更大的系统进行集成测试之前,我正在查看我编写的一些代码。我想知道的是它是否安全,或者它是否容易泄漏内存?

string somefunc( void ) {
string returnString;
returnString.assign( "A string" );
return returnString;
}

void anotherfunc( void ) {
string myString;
myString.assign( somefunc() );
// ...
return;
}

我的理解是returnString 的值被分配给一个新对象myString,然后returnString 对象被销毁作为解析对somefunc 的调用的一部分。在未来的某个时刻,当 myString 超出范围时,它也会被销毁。

我通常会将指向 myString 的指针传递给 somefunc() 并直接分配给 myString 的值,但我正在努力使我的代码更清晰一点(并且依赖于副作用函数样式 less )。

最佳答案

是的,以这种方式(按值)返回 string 是安全的,尽管我更愿意以这种方式分配它:

string myString = somefunc();

这更容易阅读,也更有效(保存空字符串的构造,然后将被下一次调用 assign 覆盖)。

std::string 管理自己的内存,并且已经正确编写了复制构造函数和赋值运算符,所以这样使用字符串是安全的。

关于c++ - 返回 C++ std::string 对象是否可以避免内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7150097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com