64,682
社区成员
发帖
与我相关
我的任务
分享
string& getStr()
{
string str = "TEST";
return str;
}
int main()
{
string str = getStr(); //ERROR
return 0;
}
string& getStr()
{
string *pStr = new string("TEST");
return *str;
}
没有任何使用都可以预期 getStr() 内部调用new进行动态分配, 这几乎总是会造成内存不能正确释放.
正常的做法有以下两种: 代码就不写了
1. 返回对象而不返回引用, 这种返回方法往往不可避免的成功首选.
2. 返回 local static 对象的引用. 这种方法可行,但不适用于多线程环境下.[/quote]
明白了,果然厉害!!
这些东西也都学过,但是没想到。不返回引用当然是知道的,就是想弄明白为什么不能用引用。
多谢~~
string& getStr()
{
string *pStr = new string("TEST");
return *str;
}
没有任何使用都可以预期 getStr() 内部调用new进行动态分配, 这几乎总是会造成内存不能正确释放.
正常的做法有以下两种: 代码就不写了
1. 返回对象而不返回引用, 这种返回方法往往不可避免的成功首选.
2. 返回 local static 对象的引用. 这种方法可行,但不适用于多线程环境下.