2

我有一段代码可以分配大量内存。

我想知道是否有一种模式可以实现以重用以前删除的内存(因为我构建了很多分配内存的临时对象,例如int*,char*等。但它可能非常大)。

我的目的是优化,所以我想重用内存而不是“删除”它,即使使用临时对象也是如此。

可能还不够清楚,请告诉我,以便我可以发布一些代码来向您展示问题。

4

2 回答 2

1

将临时对象的创建委托给一个类。

正如 Dan 所指出的,您需要通过在该类中重载 new 和 delete 运算符来实现内存管理器或池。

第一次调用 new 时分配大块内存并将其划分为固定大小的块。继续将这些块用于临时对象。调用 delete 时,只需更新该块的分配状态。

使用完临时对象后删除大块。

于 2013-05-16T16:36:54.107 回答
0

我所做的就是确保对象中有一个备用指针。然后,我不再“删除”,而是保留以前使用过的对象的链接列表,并将其推送到列表的前面。而不是“新”我弹出一个。如果列表是空的,那就是我创建一个真正的新列表的时候。

于 2013-05-16T16:41:22.120 回答