假设有一个用户定义的类Student.考虑以下两个功能:
Student someFunc1() {
return *(new Student("John",25));
}
Student& someFunc2() {
return *(new Student("John",25));
}
Run Code Online (Sandbox Code Playgroud)
没有详细说明为什么他们按照他们的方式实施,他们都是正确的吗?有人告诉我,会有内存泄漏但是怎么回事?
是的,肯定有问题.
someFunc1() 肯定会导致内存泄漏,因为丢失了分配对象的内存地址.
someFunc2()会导致内存泄漏的风险,因为函数的用户必须记住用奇怪的语法删除返回的对象(delete &object).
它们都不是很好的C++.正确的版本是:
Student someFunc3() {
return Student("John",25);
}
Run Code Online (Sandbox Code Playgroud)