Qualcuno potrebbe spiegarmi l'istruzione dove ho messo i punti di domanda? Se while (val ?= -1) mi permette di bloccare il ciclo digitando -1, allora non capisco a cosa serve l'istruzione v[size-1]=val. Modificando in entrambe le istruzioni -1 con -2 ,il ciclo non dovrebbe avere lo stesso output ma bloccarsi con -2? Infine non mi è' chiara la differenza tra mallocdebug e realloc.. nel mio libro di testo e' stato dato come esercizio chiarificatore sulla malloc la " costruzione "di una qualsiasi matrice dinamica. L'esercizio l'ho svolto e funziona perfettamente ma a questo punto non capisco il motivo per cui in questo esempio non poteva essere usata l'istruzione malloc per allocare la variabile sizeof. Per sizeof infatti , tanto quando oer una matrice dinamica , variabile dim , io non so a priori lo spazio che sarà necessaria allocare.. Grazie mille a tutti coloro che avranno la pazienza di rispondere alle mie domande

codice:
 #include <stdio.h> 
#include <stdlib.h>  
int main()  {      
 int *v=NULL ;        
int i, val;       
 int size = 0;   
do  {             
printf ( "Inserire un nuovo elemento nell'array :");   
scanf ("%d", &val);             
v = (int*) realloc( v, (++size)*(sizeof(int)) );            
 v[size-1] = val; // ?????????????????????       
} while (val != -1);   
 printf( "Elementi nell'array:");         
for ( i=0; i < size; i++ )             
printf ("%d ", v[i]);  
free(v); 
return 0; }