【发布时间】:2020-08-13 04:16:02
【问题描述】:
我有空课(仅举例):
class A { ; };
我尝试了两种在函数中创建新的 A 类对象并返回:
1)
A getA1()
{
A a;
return a;
}
2)
A getA2()
{
A* a = new A;
return *a;
}
如果我得到相同的结果,它们之间有什么区别?
【问题讨论】:
-
如果我得到相同的结果,它们之间有什么区别? -- 编写一个正确使用这两种方法的
main程序,即没有内存泄漏。你不能用第二种方法做到这一点。如果您的代码泄漏内存,“结果”有什么好处? -
@Alex 提示:添加析构函数到 out ~A() { std::cout
-
-O3下的 Clang 编译为ret。 :) -
第二个性能较差,会泄漏内存。第一个不会。
-
据我了解
getA1()函数我无法释放内存,因为它是在程序启动之前分配的。在getA2()函数处内存分配是动态的,在程序执行之前不会分配?
标签: c++ return-value