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
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
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
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;
  }
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
 
#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();
}
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 !

Des suggestions ????