你通过重写新的运营商有帮助的是什么新的功能的(用于调试或不)?

有帮助吗?

解决方案

我不得不超负荷new的主要原因一直是性能。一个例子是分配大量的小对象,这是通常与通用分配器相当缓慢的,但通常可以提高一很多用自定义分配器。

其他提示

重载运算符new必须做的时候有很多情况。正如有人所说,这是主要用于自定义的内存管理。

,我已经亲自处理是用于嵌入式系统的主要例子。

在一个嵌入式系统,动态存储器分配一般是一个问题。即使你有一个嵌入式操作系统,支持它,你有各种各样的问题,你可能要处理(例如,嵌入式系统往往需要比他们的PC同行更具有确定性。此外,你可能会工作的系统上其被认为是好几年的时间,在这种情况下,内存碎片是一个真正的问题)。

因此,嵌入式系统趋向于完全禁止动态存储器分配。

当然,在大多数软件项目,你需要的一些形式的动态内存,并在这些情况下,您通常实现自己的(即具有某种内存池的所有线程可以问从等存储器)。

为了使C ++项目中使用的最简单的方法这个手卷动态内存分配,我见过的项目覆盖运营商新的使用该项目的分配方法。

那么,自定义的内存管理和调试。这就是它,而你可以把它弄出来了。

您可能会开发需要一些额外的阶段,初始化特定对象库,重载允许你这样做没有一些笨拙的额外要求用户否则将最终不得不键入

如果您正在使用SSE / SIMD工作,通常需要你的内存是4字对齐的,所以你可能超载new为相关类使用memalign()(而默认malloc()是做一些相当于纯<=>)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top