Ciao,
Immagino che alla variabile V tu assegni correttamente un valore (altrimenti può facilmente fallire una delle prime malloc). Detto questo:
Un errore evidente è nel ciclo della prima malloc:
for(i = 0; i <b><=</b>r; i++)
Così facendo tu crei un elemento di troppo. Il controllo corretto (per avere r elementi) è for(i=0;i<b><</b>r;i++)... visto che si parte dall'elemento zero (0) l'ultimo tra r elementi avrà indice [ r-1 ]...
Lo stesso avviene nel ciclo for della free.
Il crash avviene per il fatto che allochi un array per r elementi e poi ne scrivi (e leggi) r+1...
Ciaociao
Venite a visitarci qui:
http://www.bottomap.co