【发布时间】:2021-07-24 07:13:51
【问题描述】:
我必须使用 new 关键字多次重新分配 iScreen 和 oScreen。
我发现在重新分配新的堆内存之前,我必须每次都 delete 他们。
对我来说,这似乎是一种不好的做法。有没有更好的方法来解决这个代码重复?
Matrix* oScreen;
Matrix* iScreen;
iScreen = new Matrix(100, 100);
oScreen = new Matrix(100, 100);
//do something with iScreen, oScreen
delete iScreen; // have to write same "delete iScreen" every single time?
iScreen = new Matrix(150, 150);
delete oScreen;
oScreen = new Matrix(150, 150);
【问题讨论】:
-
在我看来,最佳实践是将所有动态分配的对象保存在某种拥有容器中。主要是
std::vector或std::unique_ptr。 -
退后一步。为什么要用
new关键字多次重新分配iScreen和oScreen? -
真的需要重新分配
*iScreen = Matrix(150, 150);吗?
标签: c++ dynamic-memory-allocation new-operator heap-memory delete-operator