A parte questa

b=malloc(dim*sizeof(int));

che è sbagliata e dovrebbe essere

b=malloc(dim*sizeof(int *));

non vedo altro di evidente.

Dicci cosa inserisci come dati che ti danno problemi e il messaggio esatto dell'errore.