Bonjour

Je me pose une question toute bête à laquelle je n'ai pas trouvé de réponses:
Si dans une boucle je fais un malloc d'un tableau de caractère
A chaque tour de boucle je refais le malloc avec bien sur une taille différente
Je ne fais mon free qu'apres la boucle

Est-ce qu'il n'y a pas de risques de fuite mémoire.
Est-ce qu'a chaque malloc l'ancienne variable est libérée?

Par exemple

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <stdio.h>   /* Pour printf et fgets */
#include <stdlib.h>  /* Pour exit */
#include <string.h>  /* Pour strcmp */
 
int main(int argc, char **argv)
{
char * test[] = {"sdsdqsdqsdqsdqsdqsdqsr", "z", "qsdqsdsqdq", "qsdqsqs", "qsdqsdqs", "qsdqsdq", "ssssssssssssssssssssssssss",
 "asssssssssssssssss", "ssgdfghdfhdfhsgdfg", "d", "f", "dsdfsdfsdfsddsfsdfdfsdfssfdfdsddfsddfsdfsdf"};
 
	int compteur=0;
	int compteurNbreDefois=0;
	int tailleLigneFinal;
	char* ligneFinal;	//tableau content le nom + la ligne
	char ligne [100];
	char nom[10];
 
	strcpy(nom,"test");
	strcat(nom," >");		// concatenation d'un prompt > dans nom
 
 	do
	{
		strcpy(ligne,test[compteur]);
 
		tailleLigneFinal=strlen(ligne)+strlen(nom);
 
		ligneFinal=malloc((tailleLigneFinal+1)*sizeof(char));	//creation d un tableau de mot de la taille du nom
									// et de la ligne rentree +1
		if(ligneFinal==NULL)	//si l allocation echoue
		{
			perror("echec de l'allocation");		
			exit(EXIT_FAILURE);
		}
 
		sprintf(ligneFinal,"%s %s",nom,ligne);	//concatenation dans ligneFinal du nom et de la ligne
		printf(ligneFinal);
		printf("\n");
 
		if(compteur==11)
		{
			compteur=0;
		}
		else
		{
			compteur++;	
		}
		compteurNbreDefois++;
	}
	while(compteurNbreDefois!=1000000);
	free(ligneFinal);
Merci d'avance de vos réponses