vorrei accodare due stringhe

oltre al canonico modo con sprintf

volevo sapere se c'è qualcosa di + veloce di sprintf (a parte l'asm)

questo...andrebbe bene?

mettendo che tmpbuffer è quello che devo copiare dentrp buffer
il tutto sta in un ciclo

codice:
while(....) {
  while(*tmpbuffer) {
    count++;
    *buffer = *tmpbuffer;
    tmpbuffer++
    buffer++
  }
}

buffer -= count;
solo che quando faccio il free dei due puntatori ad eliminare i puntatori mi da seg fault :\

xo se ad es faccio un
printf("%s\n", buffer);

mi stampa tutto xfettamente

qualcuno ha idea del xche?
(mi da seg fault eliminando tutti e due i puntatori, sia buffer, sia tmpbuffer (che non riporto alla posizione iniziale))

idee?