Cita: En caso de exito el bloque previo de lista será movido a otra posicion para albergar la nueva memoria solicitada, es decir que la posicion previa de lista ya no está disponible, y los siguientes intentos de acceso a 'lista' provocan el segfault. Se soluciona tal como te dejo en el ejemplo: asignar el retorno a una variable temporal sobre la que vas a hacer las comprovaciones. Si asignas el retorno de realoc a la misma variable, en caso de error no podras recuperar el bloque previo y provocaras una perdida de memoria, por eso se usa una variable temporal intermediaria.
compro
baciones
Excelente explicación vosk, muy buenos y entendibles tus códigos, gracias!!