C++ 使用 'new' 分配顺从内存分配

C++ Assigning Deferenced memory allocation using 'new'

本文关键字:分配 内存 使用 C++ new      更新时间:2023-10-16

我是指针新手。需要一些关于以下代码片段含义的帮助。帐户是一个类。

Account a2 = *(new Account(123));

我知道new会向帐户类型的对象返回地址。现在,当我们使用 '*' 运算符取消引用它并将此值传递给 a2 时,a2 会得到什么,这个由 new 创建的对象是否仍然存在于堆中?

另外,我们是否需要在类帐户中为这种类型的赋值定义一个复制构造函数?

Account a2 = *(new Account(123));

您在免费存储区上创建了一个新的Account对象,该对象需要通过new从中提供给您的指针进行deleted,否则会出现内存泄漏。

当前代码取消引用从new返回的指针,并将Account对象复制到基于堆栈的Account对象a2中。这意味着指针丢失,因此存在内存泄漏,因为您再也无法delete它。