Pregunta

Estoy intentando sobrecargar el operador global nuevo y eliminarlo para una aplicación sensible al rendimiento. He leído las inquietudes descritas en http://www.informit.com /articles/article.aspx?p=30642&seqNum=3 y las recomendaciones para utilizar el asignador de Intel TBB http://www.intel.com/technology/itj/2007/v11i4/5-foundations/5-memory.htm

Como estoy sobrecargando nuevo y eliminar por primera vez, tengo algunas preguntas.

¿Debo incluir mi nuevo encabezado Allocator.h (o Pre.h) que contiene la nueva función sobrecargada en todos los archivos que contienen " new " llamadas? Esto es tedioso.

¿O debería usar " gcc -include Allocator.h ... " que incluye Allocator.h (antes) en cada unidad de traducción? Quiero mantener la plataforma de código lo más independiente posible. ¿Todos los compiladores admiten algo análogo a " gcc -include " ;?

¿Fue útil?

Solución

Si desea sobrecargar el operador global new y operator delete , solo necesita implementarlo. No es necesario que lo defina explícitamente en todas partes, ya que ya está definido como parte del lenguaje.

Editar: si desea definir un operador nuevo que tome diferentes parámetros, deberá # incluirlo en todas partes. Como sea que hagas eso depende de ti; es sobre todo una cuestión de estilo.

Y no olvide implementar todas las variantes del operador global new y delete: new , new [] , delete , < code> delete [] , y las variantes std :: nothrow .

Otros consejos

Si está utilizando Visual Studio y está usando encabezados precompilados, puede incluir la inclusión allí. Creo que gcc también tiene algún tipo de encabezado de precompilación, que también mejoraría los tiempos de compilación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top