Patrick Dupré a écrit :
> Ce qui m'etonne c'est que la valeur du pointeur n'est jamais changee
> (sauf apres ce premier appel)
>
> #define NB_PAR 10
> typedef double lineArray [NB_PAR] ;
> typedef lineArray *floatMatrix ;
>
> main () {
> unsigned long int nb_lines, i ;
> nb_lines = 0 ;
> floatMatrix lines = NULL ;
> for (i = 0 ; i < 5 ; i++) {
> lines = (floatMatrix) realloc (lines, (++nb_lines) * sizeof
> (lineArray)) ;
> printf ("Ptr new: %d\n", lines) ;
> }
> }
Tant qu'il y a de la place disponible derrière le pointeur initialement
alloué,
il continue à t'allouer l'espace derrière, et donc le pointeur ne change
pas.
C'est voulu : ça évite de recopier inutilement les données.
Chez moi, si je fais tourner la boucle plus loin, le pointeur change à
l'itération 1689.
Edgar.