El mejor caso que encontré fue para evitar la fragmentación del montón al proporcionar varios montones de bloques de tamaño fijo. es decir, crea un montón que consta completamente de bloques de 4 bytes, otro con bloques de 8 bytes, etc.
Esto funciona mejor que el montón predeterminado 'todo en uno' porque puede reutilizar un bloque, sabiendo que su asignación se realizará calce en el primer bloque libre, sin tener que controlar o caminar el montón buscando un espacio libre del tamaño correcto.
La desventaja es que consume más memoria, si tiene un montón de 4 bytes y un montón de 8 bytes, y quiere asignar 6 bytes ... tendrá que ponerlo en el 8- montón de bytes, desperdiciando 2 bytes. Hoy en día, esto no es un problema (especialmente cuando se considera la sobrecarga de esquemas alternativos)
Puede optimizar esto, si tiene muchas asignaciones para hacer, puede crear un montón de ese tamaño exacto. Personalmente, creo que desperdiciar unos pocos bytes no es un problema (por ejemplo, está asignando una gran cantidad de 7 bytes, usar un montón de 8 bytes no es un gran problema).
Hicimos esto para un sistema de muy alto rendimiento, y funcionó maravillosamente, redujo nuestros problemas de rendimiento debido a las asignaciones y la fragmentación del montón dramáticamente y era completamente transparente para el resto del código.
No tratando de ser una ducha, pero se han encontrado respuestas útiles con una búsqueda : http://stackoverflow.com/questions/1152511/any-reason-to-overload-global-new-and-delete – Skurmedel
@Skurmedel: Pero ese solo es sobre operador global nuevo (y eliminar). Preguntaba sobre la sobrecarga del operador nuevo en general, p. en una clase. – Frank
No veo por qué las razones serían realmente diferentes, aparte de los diferentes ámbitos. – Skurmedel