Tu n'es pas assez attentif.
Les 3 derniers malloc() sont faux pour deux raisons :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 env2->buffer = malloc(4096 * sizeof(char*)); cd = malloc(my_strlen(env2->buffer) * sizeof(char*)); cd1 = malloc(my_strlen(env2->buffer) * sizeof(char*)); tmp = malloc(my_strlen(env2->buffer) * sizeof(char*));
- cd, cd1 et tmp (et peut être env2->buffer) sont des char* alors il n'y a pas de raison d'avoir sizeof(char*), mais on devrait avoir sizeof(char) (qui d'ailleurs vaut 1 par définition)
- surtout, my_strlen(env2->buffer) va retourner n'importe quoi puisque la mémoire pointée par env2->buffer contient n'importe quoi : malloc() alloue de la mémoire mais la donne dans un état quelconque
Partager