有关返回动态内存的问题
在标准的C++ STRING类中,几个操作符重载函数都反回string&类型,而在函数定义中是先:String *temp =new String;而后:return *temp;这样不是造成了内存泄漏吗?在哪完成了与new 对应的delete呢 ?
[解决办法]
如果是 char* temp = new char[10]; return temp; 就会出问题
但是string就不会,它有析构函数嘛。
[解决办法]
返回的并不是堆变量,而是栈变量,他超出范围自动释放.
string str; //栈中分配对象,该对象离开范围自动调用析构函数释放资源
&str; //这个指向的也是栈中的对象.
所以,内部申请细节,根本不用担心.反正析构机制会自动释放.