Tengo una pequeña clase que conseguí que sirve para hacer trace de la memoria, de los news, para poder al final saber qué ha quedado en la memoria como memory leaks, y ver dónde me faltan los delete.
EL problema es que comienza así:
Código:
Es decir, pone que hay que añadir unas definiciones:#ifndef TRACER_H #define TRACER_H //to be copied to the first .h you want to trace. /*#define _DEBUG #ifdef _DEBUG #define DEBUG_NEW new(__FILE__, __LINE__) #else #define DEBUG_NEW new #endif #define new DEBUG_NEW */ #include <new> #include <cstdlib> #include <list> #include <iostream> #include <stdio.h> #include <string.h> /** * Replaces the usual new operator, allowing to trace memory leaks. * \param size the amount of memory being reserved. * \param file the file in which the allocation takes place. * \param line the line of the file in which the allocation takes place. */ void* operator new(size_t size,const char *file, int line); /**
#define _DEBUG
#ifdef _DEBUG
#define DEBUG_NEW new(__FILE__, __LINE__)
#else
#define DEBUG_NEW new
#endif
#define new DEBUG_NEW
En el primer archivo de cabecera en el que queramos empezar.
EL problema es que me dice undefined operator new. En todas partes, incluso en el archivo h en el que he incluido este texto.
No se mucho de ifdef. Pero me da la sensación que lo que pasa es que no sabe dónde esta el archivo con el new. Qué hay que hacer? Incluirlo también en todas partes el .h para que sepan donde está la implementacion?. Tengo varias carpetas y esta clase del simpletracer la metí en utilidades/simpleTracer.h
...
a ver si me podéis echar una mano.