C ++使用'new'分配Deferenced内存分配

时间:2018-05-27 20:09:45

标签: c++

我是指针的新手。想要了解以下代码片段的含义。帐户是一个类。

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

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

另外,我们是否需要在类帐户中为此类作业定义复制构造函数?

1 个答案:

答案 0 :(得分:3)

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

您在免费商店中创建一个新的Account对象,此对象需要delete通过new给您的指针,否则会出现内存泄漏。

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