Gestion des memory leak et ecriture hors-tableau: crtdbg.h???? [C++] - Programmation
Marsh Posté le 03-04-2001 à 17:58:56
Korben a écrit a écrit : Salut Je sais que Visual C++ 6 (et déjà les versions précédentes), permette de rajouter du code pour controler les mauvaises libérations de mémoire (mémory leak) ou l'écriture/lecture hors-tableau (ex: int tabl[10].... int val=tabl[10] alors que tabl va de 0 à 9)). J'ai lu qu'il fallait employer la libraire crtdbg. Vous avez de l'expérience là-dedans? HELP HELP HELP. C'est super mal documenté. @+ |
remplace ton int tabl[10] par un vector...
il me semble qu'il declanche des execption en cas de debordement
Marsh Posté le 03-04-2001 à 18:02:07
Pour ma part je cherche les memory leak à partir d'UMDH
(il faut que ton prog génère des symbols lors de la compilation
=> .pdb)
=> http://support.microsoft.com/suppo [...] 8/3/43.asp
Marsh Posté le 04-04-2001 à 00:11:54
Benb, j'ai pris un exemple simple. Mais je ne pense pas que lorsque j'emploie un tableau de structure avec des éléments pointant sur un tableau de structure dynamique contenant des pointeurs, je puisse remplacer cela par un vecteur....
Mais pour le cas présenté, peut-être.
Non, ce que je cherche, c'est à comprendre l'utilisation de la libraire crtdbg fournit avec Visual C++ 6 (trouvée grace à MSN)
Ou, à trouver un autre utilitaire gratuit ou en version d'essai pour plus que 15 jour (contrairement à Rational Purify 2001, très bien, mais limité à cette période).
D'avance merci
Styx0, merci, je regarderai cela demain matin.
@+
Marsh Posté le 04-04-2001 à 08:45:53
Korben a écrit a écrit : Benb, j'ai pris un exemple simple. Mais je ne pense pas que lorsque j'emploie un tableau de structure avec des éléments pointant sur un tableau de structure dynamique contenant des pointeurs, je puisse remplacer cela par un vecteur.... Mais pour le cas présenté, peut-être. Non, ce que je cherche, c'est à comprendre l'utilisation de la libraire crtdbg fournit avec Visual C++ 6 (trouvée grace à MSN) Ou, à trouver un autre utilitaire gratuit ou en version d'essai pour plus que 15 jour (contrairement à Rational Purify 2001, très bien, mais limité à cette période). D'avance merci Styx0, merci, je regarderai cela demain matin. @+ |
Je te citais la solution la plus simple... et qui pourrait etre consideree comme une bonne habitude a prendre. Je ne cherche pas la polemique.
Quand je travaillais sous Windows (Visual 5.0) j'utilisait BoundChecker, mais il n'est pas livre avec Visual...
Bon courage, ces problemes sont toujours embetants.
Marsh Posté le 04-04-2001 à 09:40:37
Et oui. Parce que c'est vraiment pénible.
J'emploie actuellement Rational Purify, qui est très pratique (s'intègre à VC++ 6) Mais il est limité à 15 jours.
J'en entendu parler de crtdbg, disponible déjà avec VC++. Le problème, c'est que je comprends rien. Aucune idée comment l'installer et l'utiliser. C'est vraiment pas clair.
ALors? Qqn connait qqch d'autre ou possède un utilitaire qu'il peut me passer?
D'avance merci
@+
Marsh Posté le 04-04-2001 à 09:56:28
Les mauvaises liberations memoires, ca se corrige en liberant proprement la memoire, pas en utilisant une toolkit proprietaire et non portable qui intercepte les situations d'arret et les recuperes.
A+,
Marsh Posté le 04-04-2001 à 11:49:00
Gilou, je fais du debugging. Et lorsque tu fais du debugging, tu veux que l'utilitaire t'aide. Je veux donc que cette utilitaire me dise "tu as oublié de libérer de la mémoire" ou "tu lis/écris hors tableau". Pas qu'il le fasse pour moi. Et se dire: je n'ai qu'à programmer correctement dès le début... ce n'est pas une solution, sauf si tu programmes durant tes loisire quelques petites lignes de code...
Tout bon programmeur vérifie son code et pour cela, un outil tel que Purify est très très utile. Mais pour les raisons cités plus haut, je cherche qqch de libre et, donc qqn les ayant déjà utilisé ou sachant comment le faire.
Merci
Marsh Posté le 04-04-2001 à 12:18:29
Dans ce cas la, ne cherches pas a utiliser crtdbg a moins que tu aies vraiment du temps a perdre pour t'ecrire un programme purify like.
Y'a d'autres outils avec des periodes d'essai Bug Tracker (1 mois, je crois a l'essai), BoundChecker (pas sur qu'il y ait une periode d'essai) et sans doute d'autres. Les deux dont je te parle (et purify) sont assez efficaces.
Il doit aussi trainer des librairies de malloc permettant de savoir ce qui n'est pas desalloue, sur le web, dans des articles du DrDobbs, etc.
crtdbg, c'est si je ne me trompe pas, une api, comme il y en a des tonnes dans Windows.
Faut que tu regardes les 50 entrees de la MSDN pour avoir une idee de comment on s'en sert, mais c'est pas qque chose de rapide a mon avis, car tres specialise.
A+,
[edit]--Message édité par gilou--[/edit]
Marsh Posté le 04-04-2001 à 13:57:50
Non, je n'ai vraiment pas de temps à perdre. Mais c'est pour cela que je demandais si qqn l'avait déja employé. Parce que s'il suffit de faire un include et de copier 8 lignes de codes.. c'est assez facile sinon... basta.
Comme tu as l'air pas trop ignorant, tu ne sais pas ou je peux trouvers des libraires de traitement d'image?(ouverture, accès à un pixel déterminé et enregistrement d'image)
D'avance merci
@+
P.S: Tu sais s'il y a moyen de.. rallonger la période d'essai (j'en ai besoin pour min. 3 mois)
Marsh Posté le 04-04-2001 à 14:42:15
Salut
Bug Tracker n'est pas du tout un outil de contrôle (debugging) il permet juste de mieux gérer les bugs. Non, ce que je veux, c'est un outil me vérifiant la désallocation et l'accès aux éléments d'un tableau. C'est tout. Purify est parfait mais... 15jours pffff.
@+
Marsh Posté le 04-04-2001 à 15:01:47
Korben a écrit a écrit : Comme tu as l'air pas trop ignorant ... |
Non Gilou n'est pas trop ignorant, il gère quelques millions de lignes de code chez Adobe ...
[edit]--Message édité par Verdoux--[/edit]
Marsh Posté le 04-04-2001 à 15:12:35
Korben a écrit a écrit : Non, je n'ai vraiment pas de temps à perdre. Mais c'est pour cela que je demandais si qqn l'avait déja employé. Parce que s'il suffit de faire un include et de copier 8 lignes de codes.. c'est assez facile sinon... basta. Comme tu as l'air pas trop ignorant, tu ne sais pas ou je peux trouvers des libraires de traitement d'image?(ouverture, accès à un pixel déterminé et enregistrement d'image) D'avance merci @+ P.S: Tu sais s'il y a moyen de.. rallonger la période d'essai (j'en ai besoin pour min. 3 mois) |
Intel a une librairie comme ca, un peu plus évoluée (véritable traitement d'image):
http://developer.intel.com/softwar [...] /index.htm
C'est de l'intel, donc optimisé Intel etc...
et en opensource:
http://www.intel.com/research/mrl/research/opencv/
[edit]--Message édité par MC--[/edit]
Marsh Posté le 04-04-2001 à 18:05:37
Merci MC. Tu as déja employé cela? C'est simple à utiliser ou c'est une vraie mer...? Parce que je crois qu'au niveau traitement c'est génial, mais le chargement et enregistrement des fichiers est inexistant. Et comme je dois avoir un minimum de perte lors du chargement, je ne peux me permettre de faire 40'000 conversion. Gilou, qui d'après certain bosse chez Adobe, tu n'as pas une solution à ce problème? Si vous avez besoin de plus d'info, je me tiens à votre disposition. C'est vraiment un gros projet dont je suis responsable. Alors si vous savez quelle libraire employer pour le traitement d'image et de son...
Je suis sinon toujours à la recherche d'une personne sachant employé ce super crtdbg. L'endroit ou je bosse ne désire en effet pas investir dans un logiciel tel que purify sans avoir testé ce qui est proposé avec Visual C++ 6.0 (qu'il paye une fortune)
@+
Marsh Posté le 05-04-2001 à 21:18:54
Pour le 1 et 4, c'est typiquement ce que font pas mal de lib commerciales (avec Accusoft par exemple, ce serait grosso modo: Un appel pour creer un objet image par ouverture d'un fichier; un appel pour recuperer les infos de l'image; un appel pour modifier le pixel; un appel pour sauver le fichier (et un appel pour detruire l'objet image quand on ne s'en sert plus)).
Peut pas te dire pour les libs non commerciales. Mais si je me souviens bien, il y avait une lib unix (portee sous win?) assez pratique pour ce genre de chose. Je ne me souviens pas completement de son nom (pbm?).
Pour les Wav, j'ai pas d'infos.
A+,
Marsh Posté le 03-04-2001 à 17:52:37
Salut
Je sais que Visual C++ 6 (et déjà les versions précédentes), permette de rajouter du code pour controler les mauvaises libérations de mémoire (mémory leak) ou l'écriture/lecture hors-tableau (ex: int tabl[10].... int val=tabl[10] alors que tabl va de 0 à 9)).
J'ai lu qu'il fallait employer la libraire crtdbg. Vous avez de l'expérience là-dedans? HELP HELP HELP. C'est super mal documenté.
@+