首页 > 解决方案 > 在 C++ 中使用 new

问题描述

假设我将一个新对象传递给这样的函数:

loadContainer->addControlView( new BmpView( BMP_PICTURE ) );

现在,我想在将 BmpView 的特定特性传递给 addControlView 之前对其进行更改。我这样做的方式是这样的:

Control* newView = new BmpView( BMP_PICTURE );
newView->changeColor( WHITE );
loadContainer->addControlView( newView );

这会创建一个额外的临时/本地对象吗?或者在这两种情况下分配的内存量是否相等?

标签: c++

解决方案


在您的函数中分配的唯一添加的内存是一个新指针*newView,它的大小非常小,并且不受 BmpView 的实际大小的影响。它不会为 BmpView 分配两次内存。

我没有考虑 call 的任何内存开销changeColor,我认为这不是这个问题的重点。


推荐阅读