Decidí sobrecargar los operadores nuevos, nuevos [], ... en mis clases para poder registrar el archivo y la línea a la que se llamaban para poder rastrear más fácilmente las asignaciones/fugas de memoria.Nuevos problemas de operador sobrecargado
Ahora los problemas está en mi pila y matrices de clases (y otras clases de contenedores de plantilla que asignar memoria):
Si los uso con una de mis clases que tiene el nuevo, nuevo [], ... operadores sobrecargados funciona bien.
Pero si lo uso con los tipos de datos estándar de C++ (int, float, ...) no puedo asignarlos, ya que ningún nuevo operador sobrecargado coincide con los argumentos del nuevo (__ LINE __, __ FILE __) operador (u otros como colocación nueva).
Ejemplo de código de pila:
// placement new
T* t=new(__ LINE __ , __ FILE__)(&m_data[i])T;
Así que estoy de buenas ideas sobre cómo hacer este trabajo. Si reemplazo nuevo (__ LINE __, __ FILE __) con la nueva capacidad de registro de memoria perdida. Una solución es crear una pila separada para los tipos de datos estándar en los que se usa la nueva configuración predeterminada.
¿Hay alguna forma de detectar en tiempo de compilación si un parámetro de plantilla es una estructura, una clase o un tipo incorporado de C++?
¿Cómo manejas cosas como esta? ¿Qué sugieres? Cualquier comentario sobre este diseño (bueno, malo) es obviamente bienvenido (simplemente no publique cosas como "no reinvente la rueda con sus propios contenedores").
¿Ha sobrecargado ' operador nuevo (__ LINE__, __FILE __) 'globalmente y tratado de usar con' int', 'float', etc. – iammilind
Una opción sería reemplazar global 'operator new()' y friends. – sharptooth
Si está buscando la depuración de fugas de memoria, no veo por qué está haciendo el trabajo de algo que ya existe para esto: ¿Valgrind? – Nim