局部变量 std::string s,中分配的用于真正存放str内容的空间是在栈上,还是在堆上?
using namespace std;
string subfunc()
{
string s=" very very long string ..... !!!!";
return s;
}
int main()
{
cout<<subfunc()<<endl;
return 0;
}
请问,在subfunc() 中的string s,在返回时,会不会发生 s 的内容复制,消耗额外资源?
换一种问法,局部变量 s,中分配的用于真正存放str内容的空间是在栈上,还是在堆上?
改为下面代码速度是否会有提升?
string * subfunc()
{
string *ps;
ps=new string;
*ps=" very very long string ..... !!!!";
return ps;
}
int main()
{
string *ps;
ps=subfunc();
cout<<*ps<<endl;
delete ps;
return 0;
}