读书人

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

发布时间: 2012-02-17 17:50:42 作者: rapoo

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

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

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

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

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

读书人网 >C++

热点推荐