Bonjour,
Je cherche a surcharger les operateurs new et delete globaux, mais je veux que cette surcharge ne s'applique que dans un namespace en particulier.
Voici une exemple pour illustrer mes propos
NameSpace.h
NameSpace.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #ifndef __MYNAMESPACE_H__ #define __MYNAMESPACE_H__ namespace MyNameSpace { void *operator new ( size_t ); void operator delete ( void * ); void Test(); } #endif
TestNameSpace.pp
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
18
19
20
21
22
23
24 #include <stdafx.h> #include <stdlib.h> #include <stdio.h> #include <malloc.h> #include "NameSpace.h" void *MyNameSpace::operator new(size_t size) { return malloc(size); } void MyNameSpace::operator delete (void *Ppt_pt) { free(Ppt_pt); } void MyNameSpace::Test() { char *Lsz_val = new char[255]; delete [] Lsz_val; }
Le projet compile sans pb avec VC++ 2003 par contre je ne rentre jamais dans mes operateurs new et delete que ca soit dans main ou dans Test !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include "stdafx.h" #include "NameSpace.h" using namespace MyNameSpace; void main(int argc, char* argv[]) { char *Lsz_val = new char[255]; delete Lsz_val; Test(); }
Des suggestions ????
Partager