C++返回局部变量的引用
在好多地方都看到,要避免返回局部变量的引用,因为函数执行完毕后,局部变量将会被销毁,返回引用比较危险。
请按下面的示例:
在上面的代码中,函数func()返回了局部变量m的引用,func()执行完后,按照我的理解,m将被销毁,那么结果输出的fp应该不是9吧。
可能我对C++的引用理解还有误,那么请看下面的返回局部变量指针的例子。
为什么结果仍然是输出9呢?
最近被C++的内存管理搞晕了,大家有好的资料或者书籍文档推荐下,谢谢了。
请按下面的示例:
#include<iostream>
using namespace std;
int& func()
{
int m=9;
return m;
}
int main()
{
int fp=func();
cout<<fp<<endl;
return 0;
}
在上面的代码中,函数func()返回了局部变量m的引用,func()执行完后,按照我的理解,m将被销毁,那么结果输出的fp应该不是9吧。
可能我对C++的引用理解还有误,那么请看下面的返回局部变量指针的例子。
#include<iostream>
using namespace std;
int* func()
{
int m=9;
return &m;
}
int main()
{
int *fp=func();
cout<<*fp<<endl;
return 0;
}
为什么结果仍然是输出9呢?
最近被C++的内存管理搞晕了,大家有好的资料或者书籍文档推荐下,谢谢了。
...全文


