Google m'a trouvé la doc, et elle confirme mes soupçons:
Les pointeurs timeTmp et portTmp doivent être libérés avec free().
Google m'a trouvé la doc, et elle confirme mes soupçons:
Les pointeurs timeTmp et portTmp doivent être libérés avec free().
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Encore merci pour ta réponse, j'ai regardé la doc, effectivement il faut liberer avec free... Mais pourquoi? je comprend pas bien...
Pour ceux qui aime quand ça coupe : http://lcdd.stass.eu
La réponse la plus simple, c'est : Parce que la fonction les alloue avec malloc().
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
J'ai essayé ce que tu m'as dis mais sans resultat (pour le char**).
Par contre j'ai rajouter les free
Pour ceux qui aime quand ça coupe : http://lcdd.stass.eu
Et comme ça ?
Code C++ : 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
19
20
21
22
23
24
25
26
27 void lectureIni(int *time, int *port, char ** addIp) { c_inifile_init("gps.ini", NULL); { char *timeTmp = c_inifile_get_string("Gest-Parser Scanner", "Time", NULL); char *portTmp = c_inifile_get_string("Server", "Port", NULL); *time = atoi(timeTmp); *port = atoi(portTmp); *addIp = c_inifile_get_string("Server", "IP", NULL); free(timeTmp); free(portTmp); } c_inifile_close(); } int main() { int time; int port; char *addIp; lectureIni(&time, &port, &addIp); //... free(addIp); return 0; }
Ou encore:
Code C++ : 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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 #include <string> using namespace std; void lectureIni(int &time, int &port, string &addIp) { c_inifile_init("gps.ini", NULL); { char *timeTmp = c_inifile_get_string("Gest-Parser Scanner", "Time", NULL); char *portTmp = c_inifile_get_string("Server", "Port", NULL); char *ipTmp = c_inifile_get_string("Server", "IP", NULL); time = atoi(timeTmp); port = atoi(portTmp); addIp = ipTmp; //affectation d'un char* à une string: copie mais ne libère pas. free(timeTmp); free(portTmp); free(ipTmp); } c_inifile_close(); } int main() { int time; int port; string addIp; lectureIni(time, port, addIp); //... return 0; }
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Merci mais ça me plante le prog...
Je comprend pas, ta premières solution ne compile pas, la deuxieme compile mais message d'erreur windows...
(au fait j'ai remplcé les atoi() par des strtol().
Si je commente addIp = ipTmp; ça passe....
Pour ceux qui aime quand ça coupe : http://lcdd.stass.eu
- Je suis surpris que la première version en compile pas. Peux-tu poster les erreurs ?
- Je suis surpris également. Tu peux essayer de remplacer par addIp.assign(ipTmp); pour voir si ça résout le problème...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Pour ta deuxieme solution avec addIp.assign(ipTmp); ça plante toujours
Pour la première voici les erreurs de compilo :
Eu....y'en a plus, j'ai due me foiré lors de mon premier essai...snif... vraiment désolé...
Mais par contre je n'ai rien dans addIp
Voici mon code à nouveau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void lectureIni(int *time, int *port, char ** addIp) { c_inifile_init("gps.ini", NULL); { char *timeTmp = c_inifile_get_string("Gest-Parser Scanner", "Time", NULL); *time = strtol(timeTmp, NULL, 0); char *portTmp = c_inifile_get_string("Server", "Port", NULL); *port = strtol(portTmp, NULL, 0); *addIp = c_inifile_get_string("Server", "IP", NULL); free (timeTmp); free (portTmp); } c_inifile_close(); }Au fait, puisque qu'on fait un free sur les variable timeTmp et portTmp, les {} ne servent plus à rien non?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 int main() { int time; int port; char *addIp; lectureIni(&time, &port, &addIp); cout << time << endl; cout << port << endl; cout << addIp << endl; ... }
Pour ceux qui aime quand ça coupe : http://lcdd.stass.eu
OUPS!!!!
Promis je tournerais 7 fois ma langue dans la bouche la prochaine fois, c'est bon, addIp a la bonne valeur, je m'étais trompé surj'avais mis "IP" au lieu de "Ip"...
Code : Sélectionner tout - Visualiser dans une fenêtre à part *addIp = c_inifile_get_string("Server", "Ip", NULL);
Arg!
Pour ceux qui aime quand ça coupe : http://lcdd.stass.eu
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager