Originariamente inviato da MItaly
Tutte cose giustissime, non avevo osservato con attenzione il codice.

Mantiene in memoria gli elementi già presenti nell'array; di seguito uno schemino C/VB per chiarirci:
codice:
VB                                   C

Dim x(100) As Integer ===========>+- int * x;
                                  +- x=malloc(100*sizeof(int);
'...                                 /*...*/
ReDim x(200) ====================>+- int * temp;
                                  |  temp=x;
                                  |  x=malloc(200*sizeof(int));
                                  +- free(temp);
'...                                 /*...*/
ReDim Preserve x(210) ===========>+- int * temp2;
                                  |  temp2=x;
                                  |  x=malloc(210*sizeof(int));
                                  |  memcpy(x, temp2, 200*sizeof(int)); /*ecco il preserve in azione*/
                                  +- free(temp2);
Come si può immaginare il memcpy porta via un bel po' di tempo...
Grazie