C++ 为什么这段代码在C++;
我被告知以下代码将导致内存泄漏,但我不确定原因C++ 为什么这段代码在C++;,c++,memory-leaks,C++,Memory Leaks,我被告知以下代码将导致内存泄漏,但我不确定原因 object f(void) { object * o = new object(...); return *o; } 是否因为对象*o在返回之前已被复制,而原始副本从未被删除,因为它不是自动变量?通过new创建的对象从未被deleted 返回的值是一个单独的对象,它是从o指向的对象复制构建的 通常,函数tf(){/*…*/returny y;}通过tf{y}创建其返回值,即使用参数yYes构造T。听起来你好像理解
object f(void)
{
object * o = new object(...);
return *o;
}
是否因为对象*o在返回之前已被复制,而原始副本从未被删除,因为它不是自动变量?通过
new
创建的对象从未被delete
d
返回的值是一个单独的对象,它是从o
指向的对象复制构建的
通常,函数
tf(){/*…*/returny y;}
通过tf{y}
创建其返回值,即使用参数y
Yes构造T
。听起来你好像理解对了。(旁注:参数列表中不需要“void”,这真是老生常谈)。