Bonjour,
Voilà je sèche sur un problème d'adresse mémoire (et je suis sur que la réponse est évidente...)
Voilà un exemple de code:
Bien évident, ça plante sur le 2ème appel à ma_fct.
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
18 void ma_fct(char **ip_str) { strlen(ip_str[0]); } int main() { char p_str[10]; char *p = NULL; strcpy(p_str, "KO"); p = p_str; ma_fct(&p); ma_fct(&p_str); return 0; }
j'ai fait affiché les adresses p == p_str == 0x00124575
j'ai fait affiché l'adresse de &p == 0x00111111
j'ai fait affiché l'adresse de &p_str et là ça se gâte ! Visual Studio me donne 0x00124575 et il n'arrive pas à récupérer mon "KO"
En gros je n'arrive pas à récupérer l'adresse de ma variable p_str. Pourquoi?
Je suis bien d'accord qu'en faisant &p_str j'ai un type char*[10] mais en quoi ça m'empêche d'avoir son adresse?
Maintenant ce n'est pas réellement un problème car je passe par p mais j'aimerai savoir pourquoi ça ne peut pas fonctionner...
merci pour l'explication
PS: dans mon code, ma_fct n'est pas exactement celle là, elle attend un tableau de chaînes de caractères (donc bien un char**) de taille N mais mon problème est que je n'ai pas de tableau mais une simple chaîne statique. Donc je pensais qu'en passant l'adresse de mon tableau statique et en donnant un taille de N == 1 je pourrais m'en sortir mais ce n'est pas le cas: je dois passer par un pointeur intermédiaire.
Partager