Bonjour à tous,
Je veux surcharger tous mes opérateurs new pour pouvoir stocker dans une structure toutes les allocations de mémoire. Bien évidement pour qu'il y ai un intérêt, je fais la même chose avec delete.
Bref venons au fait, j'ai trouvé pas mal de code identique à ce que j'ai préparé:
Tel quel, j'ai l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 dans le .h #include <cstddef> void* operator new (size_t sStruct, const char* sFichier, int iLigne); void* operator new [] (size_t sStruct, const char* sFichier, int iLigne); //#define new new(__FILE__,__LINE__) #define new DEBUG_NEW #define DEBUG_NEW new(__FILE__,__LINE__) dans le .cpp void * operator new (size_t sStruct, const char* cFichier, int iLigne) { malloc ... blablabla } void* operator new[] (size_t sStruct, char* cFichier, int iLigne) { blablabla ... free }
Si j'enlève les paramètres const char* sFichier et int iLigne, je n'ai aucun problème particulier de compilation. Toutefois, pour que mon code ai un intérêt il faut absolument que je vois où sont alloués les éléments.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 g++ -g -D_LINUX -I/home/xxx/Fonctions/ -I/usr/dt/include -I/usr/openwin/include -c -o Out/memory.cpp.o /home/xxx/Fonctions/memory.cpp > memory.cpp:4: erreur: declaration of 'operator new' as non-function
Suite à quelques recherches sur le net, j'avais rajouté #include <cstddef>. De plus, j'ai trouvé de nombreuses références à #define new DEBUG_NEW
#define DEBUG_NEW new(__FILE__,__LINE__)
Ca devrait fonctionner comme partout. Mais pas chez moi. Pourquoi et que changer?
D'avance, Merci
PS: Je suis sous Unix: gcc-4.1.2
Partager