• # Re: Tant qu'à faire de la programmation ..

    Posté par . En réponse au journal Tant qu'à faire de la programmation ... Évalué à 8.

    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.