[C++] New/Delete

New/Delete [C++] - Programmation

Marsh Posté le 18-09-2001 à 20:40:33    

Je dois tracer des fuites de memoire et je peux pas utiliser des outils tel que purify.  
J'ai donc surcharge (un peu comme M$ le fait) le new par
 
void * operator new (size_t size, char *fileName, int ligne)
{
  //log du fileName et de la ligne
 .....
}
 
avec un #define new new(__FILE__,__LINE__)
 
ca marche super bien, mais j'ai pas reussi à faire la meme chose avec le delete :
#define delete delete(__FILE__,__LINE__)
est rejette par le compilo (gcc, sunpro, visual)
 
y'a-t-il une solution simple ?

Reply

Marsh Posté le 18-09-2001 à 20:40:33   

Reply

Marsh Posté le 18-09-2001 à 21:53:52    

Euh... Renommer la fonction delete qui est appelée par ta macro.
J'ai bon ?

Reply

Marsh Posté le 18-09-2001 à 22:17:37    

nan, c'est pas bon du tout
apres le passage du preprocesseur on aurait avec une autre fct :
 
#define delete fonction(__FILE__,__LINE__)
 
int *a = new int;
 
delete a;
 
---->
int *a = new int;
 
fonction("nom de fichier source",noLigne) a; //gros probleme
 
 
en plus, je peux pas m'amuser à remplacer les quelques centaines de delete dans tout mon projet....
 
avec le new ca passe,  
#define new new(__FILE__,__LINE__)  
est remplace dans une alloc par
int *a = new("nom de fichier source",noLigne) int; //c'est un operateur admis par le compilo

 

[edtdd]--Message édité par aqwsezsxdr--[/edtdd]

Reply

Marsh Posté le 18-09-2001 à 22:59:10    

Et un

Code :
  1. #define delete fonction(__FILE__,__LINE__); delete


ça marche ? :??:
Je sais, là on commence à faire dans le pas très subtil :sarcastic: , mais bon, j'essaie...

Reply

Marsh Posté le 18-09-2001 à 23:09:29    

arf oui :) ca marche la, j'y ai meme pas pensé comme quoi faut pas toujours chercher tres loin (je m'en fous que le code soit pas propre, c'est juste pour traquer les alloc et desalloc)...
thnx  :jap:

Reply

Marsh Posté le 19-09-2001 à 00:09:44    

De rien !  :sol:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed