Debug Error à cause d'un free

Debug Error à cause d'un free - C - Programmation

Marsh Posté le 24-01-2005 à 00:05:58    

Salut  :hello:  
 
Je sais je m'y prends tres tard mais j'ai un exercice à rendre demain matin et je ne parviens pas à corriger une erreur qui me vient à cause d'un free().
Voici ce message derreur (sous Visual C++ 6.0 et .NET):
 
Debug Error!
[...]
DAMAGE: after Normal block (#44) at 0x003208B8.
(Press Retry to debug the application)
 
Abandonner|Recommencer|Ignorer
 
Voici la partie de mon code concernée par ce probleme:

Code :
  1. mot=(char*)malloc(i-d);
  2. for(j=0;j<i-d;j++)
  3. mot[j]=tolower(zl[j+d]);
  4. mot[j]='\0';
  5. for(j=0;j<nbm && strcmp(mot,T[j].mot);j++);
  6. if(j!=nbm)
  7. T[j].nbf++;
  8. free(mot);


 
Merci d'avance (dans l'espoir que quelqu'un me réponde avant que j'aille dormir  :( )
 
EDIT: Pour aller plus vite, cette partie sert à extraire en minuscules un mot d'une chaine lue, de rechercher dans un tableau T si il y est, et  s'il y est d'incrementer T.nbf


Message édité par mcyrb le 24-01-2005 à 00:08:31
Reply

Marsh Posté le 24-01-2005 à 00:05:58   

Reply

Marsh Posté le 24-01-2005 à 00:16:55    

Après ta 1° boucle for j == i-d et donc l'accès suivant mot[j]='\0' tu fais un buffer overflow.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 24-01-2005 à 00:21:35    

HelloWorld a écrit :

Après ta 1° boucle for j == i-d et donc l'accès suivant mot[j]='\0' tu fais un buffer overflow.


 
C'est à dire ?  :??:  
Comment ce fait-ce ?
 

Reply

Marsh Posté le 24-01-2005 à 00:25:37    

mcyrb a écrit :

C'est à dire ?  :??:  
Comment ce fait-ce ?


 
un tableau en C est indexé de 0 à n-1 (n étant le nombre d'éléments du tableau).
une chaine de caractère est un tableau de caractères terminé par un zéro terminal (qui est vers la fin, d'où le qualificatif terminal).
 
question : qu'y a-t-il à l'index n d'un tableau ?

Reply

Marsh Posté le 24-01-2005 à 00:26:27    

mcyrb a écrit :

C'est à dire ?  :??:  
Comment ce fait-ce ?


Il te le dit.
A la fin j est égal à i-d.

Reply

Marsh Posté le 24-01-2005 à 00:37:12    

SquiZZ a écrit :

un tableau en C est indexé de 0 à n-1 (n étant le nombre d'éléments du tableau).
une chaine de caractère est un tableau de caractères terminé par un zéro terminal (qui est vers la fin, d'où le qualificatif terminal).
 
question : qu'y a-t-il à l'index n d'un tableau ?


 
Ok j'ai compris !
Mdr ok l'erreur trop naze  :pfff:  
J'ai alloué une case en plus et tout fonctionne nickel, merci beaucoup ! :hello:  

Reply

Sujets relatifs:

Leave a Replay

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