Originariamente inviato da YuYevon
Ho esaminato un po' il codice e ci ho trovato alcune cose che non vanno, principalmente nella funzione enqueue(): in quella funzione il puntatore "pointer" potrebbe venire modificato dalla realloc() interna, alla fine c'è infatti una return di quel puntatore ma nel main() non ne salvi l'eventuale valore nuovo... sostituisci quindi la chiamata a enqueue() in main() con:

codice:
pointer = enqueue(pointer, size);
(in realtà questa cosa si potrebbe risolvere molto più finemente passando a enqueue() un puntatore a puntatore ed eliminando il valore di ritorno, ma evito di farti invecchiare anzitempo).
Lui dopo fatto realloc ha assegnato il nuovo indirizzo al puntatore passato come parametro a enqueue, quindi non serve riprenderne il valore.