Accueil > Forum > > > > Redéfinition des opérateurs new et delete
Redéfinition des opérateurs new et delete
mercredi 3 février 2010 à 10:42:19 |
Redéfinition des opérateurs new et delete

buno
|
Chers amis bonjour!
J'ai un code assez conséquent qui contient potentiellement des fuites mémoire.
J'aimerais mettre en place un outil de suivi d'allocation de mémoires afin de tracer les éventuelles fuites.
Je pensais redéfinir les opérateurs new et delete afin de tracer les allocations (pointeur, taille, fichier, ligne).
Est-ce faisable rapidement? Avez-vous ce genre d'outil sous la main?
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
mercredi 3 février 2010 à 12:21:40 |
Re : Redéfinition des opérateurs new et delete

CptPingu
|
Tu vas redéfinir les opérateurs new et delete de chaque classe ? Un peu lourd non ?
Sous Unix, il y a un outil super pour ça: valgrind. Il détecte les fuites mémoires (et d'autre chose comme les débordements de bornes, les doubles désallocations, etc...), et peut même parfois détecter la ligne exact dans le code.
Il existe sûrement un équivalent Windows, non ?
_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
|
|
mercredi 3 février 2010 à 14:31:41 |
Re : Redéfinition des opérateurs new et delete

buno
|
L'idée est justement de modifier au minimum le code: c'est pour ça que je veux redéfinir les opérateurs.
Je ne connais pas valgrind mais des recherches m'ont montré que l'équivalent sous Windows était Purify. Or il est tellement gourmand en ressource que je peux pas le faire tourner correctement en même temps que mon appli...
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
mercredi 3 février 2010 à 14:39:58 |
Re : Redéfinition des opérateurs new et delete

CptPingu
|
Est-ce que ton appli est multi-plateforme ? Si c'est le cas, je peux toujours te faire tourner un coup de valgrind :)
Peux-tu essayer sinon de redéfinir les appels system aux allocations mémoires ? Par exemple le projet Duma (ex Electric Fence), par un simple binding, permet de faire cela. Il check alors certains accès mémoires invalides. Tu peux peut être réutiliser leur technique pour détecter des fuites mémoires sans intrusion dans ton code. En revanche, ce n'est pas trivial.
N'y-t-il pas autre chose que Purify ? J'ai vu du "Insure++", et du PageHeap: http://support.microsoft.com/kb/286470, ou encore du http://www.softwareverify.com/cpp/memory/index.html.
Ou peut être Visual Leak Detector, qui doit faire partit de Visual Studio.
_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
|
|
mercredi 3 février 2010 à 17:40:38 |
Re : Redéfinition des opérateurs new et delete

buno
|
J'ai trouvé une source de Vecchio56 assez intéressante et rapide à mettre en oeuvre. Il faut que je vois si ça peut s'appliquer à mon application
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
lundi 8 février 2010 à 16:03:18 |
Re : Redéfinition des opérateurs new et delete

buno
|
Re,
J'ai réussi à redéfinir mes new et delete dans une dll. Il me suffit d'inclure ma dll dans mon projet et, en sortie, j'ai un log avec les fuites détectées (fichier, ligne, taille d'alloc).
ça marche bien sur de "petits" projets". Par contre, sur des plus gros incluant d'autres ressources tierces, il peut y avoir des soucis: par exemple, Xerces redéfinit lui aussi les opérateurs new et delete. Du coup, mon projet ne compile plus (syntax error dans XMemory.hpp).
Des idées pour faciliter la cohabitation?
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
lundi 8 février 2010 à 17:07:55 |
Re : Redéfinition des opérateurs new et delete

CptPingu
|
Essaie d'utiliser un vrai outil de vérification mémoire. La redéfinition des operateurs new et delete ne garantie pas que tu trouves toutes les fuites (ils n'agissent pas sur les malloc/free, et les new/delete custom).
De plus, il faut aussi redéfinir delete[].
En outils, il y a:
http://en.wikipedia.org/wiki/Memory_debugger
http://web.archive.org/web/20071212210815/http://www.cs.utexas.edu/users/jpmartin/memCheckers.html
Essaie vraiment d'en faire fonctionner un, sinon tu vas t'arracher les cheveux :)
_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
|
|
lundi 8 février 2010 à 17:32:22 |
Re : Redéfinition des opérateurs new et delete

buno
|
Ne t'inquiètes pas, j'ai pensé aux opérateur new[] et delete[] également.
Merci de tes liens, que je gardes sous le coude car très intéressant.
Après, si je "m'acharnes" à coder un truc pareil, c'est aussi pour pouvoir le ré-utiliser
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
lundi 8 février 2010 à 17:34:43 |
Re : Redéfinition des opérateurs new et delete

CptPingu
|
Ca n'a pas l'air simple du tout !
Un gars du MIT, a rédigé un article sur l'opérateur new. Il s'est bien cassé la tête apparemment:
http://www.scs.stanford.edu/~dm/home/papers/c++-new.html
_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
|
|
Cette discussion est classée dans : delete, opérateurs, outil, fuites, redéfinition
Répondre à ce message
Sujets en rapport avec ce message
detection des fuites mémoire [ par kimo_100 ]
j'aimerai utiliser un outil pour detecter les fuites mémoiredans mon application(en c++ sous hp ux 11).j'ai essayé avec insure,mais il ne m'a pas beau
wxWidgets : new et delete [ par Daimadoshi ]
slt tlm, voila je programme une IHM avec wxWidgets (v 2.4.2 + Dev c++ 4.9.9.0) mais je me rend compte qu'une chose me choque dans tt les tuto et exemp
faire une barre d'outil IE comme Google ? [ par supergrey ]
Bonjour, Je cherche des sources ou exemple pour créer une barre d'outil pour Internet explorer.Merci!
surcharge des opérateurs [ par gmisof ]
comment on peut utiliser la commande operator de vc++?gmisof
Code pour créer une barre d'outil dés l'exécution d'une Macro Excel (XLA) [ par superdidic ]
Bojour,Quelqu'un sait il comment faire pour créer un nouveau menu dans la barre d'outil quand on execute une macro XLA.Merci
Désallocation mémoire!!! [ par PunkDude424 ]
Mon problème est le suivant:J'avais un semblant de screen saver en Java qui affichais des etoile a chaque temps X et d'une durée Y ....la structure de
utilisation de delete [ par thiosyiasar ]
Bonne fête à tous !!!!En cette fin d'année, je suis confronté à un petit pb lors que mon application se termine, j'ai une erreur en relation la mémoir
hsdpa au secouuuur!!!!!! [ par mejdac ]
je travaille sur un projet intégrations des régles d'ingénierie hsdpa dans un outil logiciel de planification de l'interface radio de l'umtsje doit de
Vitesse de calculs [ par elflink ]
Bonjour à tous,Je travaille en API, C++.Je m'exerce sur l'élaboration d'un outil de dessinage, et de la même manière que MSPAINT, mon programme dispos
que fait exactement delete ?? [ par Tonus ]
Salut @ tous Voila je voudrais savoir si en créant un tablo dans un fonction , l'instruction delete va -t- elle supprimer la totalité du tablo ou jus
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|