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”,这真是老生常谈)。