首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

有关返回动态内存的有关问题

2012-02-17 
有关返回动态内存的问题在标准的C++STRING类中,几个操作符重载函数都反回string&类型,而在函数定义中是先:

有关返回动态内存的问题
在标准的C++   STRING类中,几个操作符重载函数都反回string&类型,而在函数定义中是先:String   *temp   =new   String;而后:return   *temp;这样不是造成了内存泄漏吗?在哪完成了与new   对应的delete呢   ?

[解决办法]
如果是 char* temp = new char[10]; return temp; 就会出问题
但是string就不会,它有析构函数嘛。
[解决办法]
返回的并不是堆变量,而是栈变量,他超出范围自动释放.

string str; //栈中分配对象,该对象离开范围自动调用析构函数释放资源

&str; //这个指向的也是栈中的对象.

所以,内部申请细节,根本不用担心.反正析构机制会自动释放.

热点排行