Aquí podría ser tu PUBLICIDAD


Sobrecarga del operador global new / delete en C ++

votos
8

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

Como estoy sobrecargando nuevo y borrando 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 nuevas 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 independiente tanto como sea posible. ¿Todos los compiladores admiten algo análogo a gcc -include?

Publicado el 12/03/2009 a las 18:34
fuente por usuario amit_grepclub
En otros idiomas...        العربية       

2 respuestas

votos
14

Si quiere sobrecargar el global operator newy operator delete, solo necesita implementarlo. No necesita definirlo 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, necesitará #incluirlo en todas partes. Como sea que lo haga, eso depende de usted; es sobre todo una cuestión de estilo.

Y no se olvide de poner en práctica todas las variantes del nuevo operador global y borrar: new, new[], delete, delete[], y las std::nothrowvariantes.

Respondida el 12/03/2009 a las 06:40
fuente por usuario MSN


Aquí podría ser tu PUBLICIDAD


votos
2

Si usa Visual Studio y usa encabezados precompilados, puede lanzar el include allí. Creo que gcc también tiene algún tipo de encabezados de precompilación, lo que también mejoraría los tiempos de compilación.

Respondida el 12/03/2009 a las 06:41
fuente por usuario wchung