Bonjour à tous,
Voilà mon problème :
dans mon code (que je ne poste pas ici, il y a plusieurs milliers de lignes), j'ai une fonction de ce genre
qui va lire une distance dans un tableau (int* _data). Les valeurs stocker dans _data vont de 0 à 300.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 (int readData(int i) { if(i>=0 && i <size) { return _data[i]; } else { //message d'erreur return -1; } }
A un endroit du code, je fais ceci :
En temps normal, le code fonctionne parfaitement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int distance = readData(index); //Affichage de la distance
J'ai voulu faire une modification, et dans une des structures utilisées par mon programme, j'ai rajouté un simple atribut de type int. (que je n'utilise jamais dans le code)
Et là, gros plantage : la distance renvoyée par la fonction readData dépasse parfois 300 !
J'imagine que le problème vient d'une fuite mémoire cachée quelque part dans le code, et qui altère la zone mémoire allouée au tableau _data. L'ajout de l'attribut a simplement mis en valeur cette fuite.
2 questions :
1. Est ce que j'ai raison de penser que le problème vient d'un autre endroit du code (j'ai vérifier l'allocation du tableau _data, et toutes les fonctions autour sans rien voir d'anormal)?
2. Connaissez vous un outil (gratuit ci possible) qui permettrait de trouver cette fuite mémoire (un tableau non alloué, un dépassement de zone allouée, etc...) ? Sachant que pour l'instant j'utilise Visual 2003 (et que je ne sais pas vraiment utiliser le debugger)
Merci pour votre aide.
Partager