Voici une partie de code sur laquelle je suis tombé :
Ma question : Pourquoi à la place de ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 char * retour_getenv; char * opt_adr = NULL; static char * adresse_serveur = ADR_SRV_DEFAUT; .... retour_getenv = getenv("OPT_ADR"); if ((retour_getenv != NULL) && (strlen(retour_getenv) != 0) { opt_adr = malloc(strlen(retour_getenv + 1); if (opt_adr != NULL) { strcpy(opt_adr, retour_getenv); adresse_serveur = opt_adr; } else { perror("malloc"); exit(EXIT_FAILURE); } }
on fait pas ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 opt_adr = malloc(strlen(retour_getenv + 1); if (opt_adr != NULL) { strcpy(opt_adr, retour_getenv); adresse_serveur = opt_adr; }
Du coup je me suis posé une seconde question, soit un autre exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 strcpy(opt_adr, retour_getenv); adresse_serveur = opt_adr;
>>> c'est dangeureux de faire ça? En fait puisqu'on alloue pas de place spécifique pour la chaine ça risque pas d'écrire sur autre chose ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 char * chaine = "exemple\0"; chaine = "nouvel exemple\0";
Partager