¿Qué es un error glibc free / malloc / realloc inválido del siguiente tamaño / puntero inválido y cómo solucionarlo?

Es muy probable que vea esta pregunta porque su pregunta se ha cerrado como un duplicado de esta. Para obtener una lista moderadamente completa de preguntas relacionadas, consulteUna larga lista de posibles duplicados: asignación de memoria C y límites de desbordamiento en Meta Stack Overflow.

Pregunta de ejemplo

Dechar gratis *: siguiente tamaño no válido (rápido) preguntado pornoobie el 11/04/2014.

Estoy liberando unchar* después de un proceso de concatenación, pero recibo este error:

free(): invalid next size (fast): 0x0000000001b86170

Este es mi código:

void concat(stringList *list) {
    char *res = (char*)malloc(sizeof(char*));

    strcpy(res, list->head->string);

    list->tmp = list->head->next;
    while (list->tmp != NULL) {
        strcat(res, ",");
        strcat(res, list->tmp->string);
        list->tmp = list->tmp->next;
    }

    printf("%s\n", res);
    free(res);
}
Pregunta genérica

Cuando ejecuto mi programa, veo un mensaje de error como este:

*** glibc detected *** ./a.out: free(): corrupted unsorted chunks: 0x12345678 ***

La información detallada puede contener cualquiera de lo siguiente después de*** glibc detected *** y el nombre del programa, y el mensaje es seguido por una dirección hexadecimal (mostrada como 0x12345678) y otra***:

free(): corrupted unsorted chunks: 0x12345678free(): invalid next size (fast): 0x12345678free(): invalid next size (normal): 0x12345678free(): invalid pointer: 0x12345678free(): invalid size: 0x12345678malloc(): corrupted unsorted chunks: 0x12345678malloc(): corrupted unsorted chunks 2: 0x12345678malloc(): memory corruption: 0x12345678malloc(): memory corruption (fast): 0x12345678malloc(): smallbin double linked list corrupted: 0x12345678munmap_chunk(): invalid pointer: 0x12345678realloc(): invalid next size (fast): 0x12345678realloc(): invalid old size (fast): 0x12345678realloc(): invalid pointer: 0x12345678corrupted double-linked list: 0x12345678

Esto sucede mientras se llama alfrobnicate() función; ¿Qué hay de malo en esa función?

Respuestas a la pregunta(1)

Su respuesta a la pregunta