tcok
Messages postés61Date d'inscriptionsamedi 7 juin 2003StatutMembreDernière intervention 3 août 2005
-
3 août 2005 à 11:40
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011
-
3 août 2005 à 14:30
Bonjour
Je voudrais savoir comment faire pour redefinir l'operateur new
(delete, new[] et deleete[] aussi) en c++. J'ai trouvé ceci dans la
librairie standard mais lorsque j'essaye de l'utiliser -> erreur de
compilation (fonction new existe deja) :
int main()
{
int * i = new int; // 4 octets
delete i;
short * s = new short; // 2 octets
delete s;
char * c = new char; // 1 octet
delete c;
int * ti = new int[12]; // 48 octets
delete[] ti;
}
tcok
Messages postés61Date d'inscriptionsamedi 7 juin 2003StatutMembreDernière intervention 3 août 2005 3 août 2005 à 11:51
C'est ce que j'ai essye de faire avant mais ca ne fonctionne pas bien
avec les macros. je n'ai aucun moyen de recuperer le nombre d'octets
qui seront alloués ni à quel emplacement en mémiore. En ce moment
j'utilise cette méthode :
#define new (before(true,__FUNCTION__,__LINE__,__FILE__),false) ? NULL : new
Cela me permet de compter le nombre d'objet qui seront crée/détruit
mais je ne fais aucun controle sur le nombre d'octets, je vérifie
seuleument si nombre d'objet crée = nombre d'objet détruit a la fin.
Vous n’avez pas trouvé la réponse que vous recherchez ?
tcok
Messages postés61Date d'inscriptionsamedi 7 juin 2003StatutMembreDernière intervention 3 août 2005 3 août 2005 à 12:40
Je veux redefinir globalement new et delete.
La doc de msdn m'a permit d'ajouter un handler dans le cas ou on a une
erreur d'allocation mais ne permet pas effectivement de recuperer le nb
de bytes et le pointeur.
Merci xterminhate, je vais essayer ta source voir ce que je peux faire
ça concerne un moteur 3D mais les outils (debug, log,...) sont très bien fait.
Y a justement une classe qui redéfinit les fonctions new et delete afin de détecter les fuites mémoire.