Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1305 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Debug Error à cause d'un free

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Debug Error à cause d'un free

n°960372
mcyrb
Mieux vaut tard que plus tard
Posté le 24-01-2005 à 00:05:58  profilanswer
 

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
mood
Publicité
Posté le 24-01-2005 à 00:05:58  profilanswer
 

n°960374
HelloWorld
Salut tout le monde!
Posté le 24-01-2005 à 00:16:55  profilanswer
 

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
n°960377
mcyrb
Mieux vaut tard que plus tard
Posté le 24-01-2005 à 00:21:35  profilanswer
 

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 ?
 

n°960378
SquiZZ
Posté le 24-01-2005 à 00:25:37  profilanswer
 

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 ?

n°960379
WhatDe
Posté le 24-01-2005 à 00:26:27  profilanswer
 

mcyrb a écrit :

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


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

n°960389
mcyrb
Mieux vaut tard que plus tard
Posté le 24-01-2005 à 00:37:12  profilanswer
 

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:  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Debug Error à cause d'un free

 

Sujets relatifs
[RESOLU] Fatal error: main() [function.main] - class php5script upload chez hebergeur free
parse error, unexpected '='[newbie complet] mettre un bandeau de pub sur mon ftp free
Fonction asm utilisable en C++, linker error...Debug sous Delphi
[php]preg_replace et limite | help me and get a free cookiequota ftp free
Exec() + free 
Plus de sujets relatifs à : Debug Error à cause d'un free


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR