char *temp1=(char*)malloc(1);
char *temp2=(char*)malloc(1);
Ca te prend comme place :
2 fois : 4 bytes(ou 8 sur 64bits) pour le pointeur + au moins 8 pour l'allocation selon la heap que tu as, car la heap a pas une granularite de 1 byte mais plutot 8 minimum
Et ca fait passer par malloc --> appel hyper-long
Quand tu fais ton strcat(temp1,temp2); tu fais 2 erreurs :
1) temp1 n'est pas forcement a 0 apres le malloc, si tu fais un strcat, il va essayer d'aller apres le 1er byte, hors du buffer et crasher
2) Si temp2 n'est pas 0, strcat va parcourir le buffer temp2 jusqu'a ce qu'il trouve un 0 --> buffer overflow -> crash
Moi je te proposes plutot :
void mamethode(char *elt);
char montableau[TAILLE_DE_TABLEAU];
mamethode( &(montableau[i]) );
Et la t'as effectivement passe un pointeur sur l'element i de ton tableau.
# Re: Tant qu'à faire de la programmation ..
Posté par pasBill pasGates . En réponse au journal Tant qu'à faire de la programmation ... Évalué à 8.
char *temp2=(char*)malloc(1);
Ca te prend comme place :
2 fois : 4 bytes(ou 8 sur 64bits) pour le pointeur + au moins 8 pour l'allocation selon la heap que tu as, car la heap a pas une granularite de 1 byte mais plutot 8 minimum
Et ca fait passer par malloc --> appel hyper-long
Quand tu fais ton strcat(temp1,temp2); tu fais 2 erreurs :
1) temp1 n'est pas forcement a 0 apres le malloc, si tu fais un strcat, il va essayer d'aller apres le 1er byte, hors du buffer et crasher
2) Si temp2 n'est pas 0, strcat va parcourir le buffer temp2 jusqu'a ce qu'il trouve un 0 --> buffer overflow -> crash
Moi je te proposes plutot :
void mamethode(char *elt);
char montableau[TAILLE_DE_TABLEAU];
mamethode( &(montableau[i]) );
Et la t'as effectivement passe un pointeur sur l'element i de ton tableau.