Bonjour, je me pose des questions sur le fonctionnement de free. Notamment, est ce que de la memoire allouee dans une fonction devra être libéré à l'extérieur de cette même fonction.
Par exemple, est ce que le code suivant est correct ?
Enfin, je dois dire que j'écris un programme qui contient énormément d'allocations memoire, et je voudrai bien savoir comment limiter la casse (eviter les fuites memoires et les appels trop frequents a malloc() et free() ) en adoptant des conventions de codage efficaces.
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32 #include <stdio.h> #include <stdlib.h> #include <string.h> char * say_hello(const char * name) { char * o_string ; o_string = malloc(sizeof(*o_string)*(strlen(name)+strlen("hello "))); if(o_string!=NULL) { o_string = strcpy(o_string, "hello ") ; o_string = strcat(o_string, name) ; } else { puts("probleme memoire") ; } return o_string ; } int main(void) { char * sentence ; sentence = say_hello("TOTO") ; if(sentence!=NULL) { puts(sentence) ; free(sentence), sentence = NULL ; } return 0 ; }
Merci beaucoup.
Cordialement,
kromartien.
Partager