tag keywords google for ejemplos c malloc free

keywords - Carácter gratuito*: tamaño siguiente no válido(rápido)



meta tags google (1)

Tu código es incorrecto

Está asignando espacio para un único puntero ( malloc(sizeof(char*)) ), pero no caracteres. Está sobrescribiendo el espacio asignado con todas las cadenas, lo que provoca un comportamiento indefinido (en este caso particular, corrompe los datos de contabilidad de malloc() ).

No necesita asignar espacio para el puntero ( res ), es una variable local. Debe asignar espacio para todos los caracteres que desea almacenar en la dirección que contiene el puntero.

Como va a recorrer una lista para buscar cadenas para concatenar, no puede saber el tamaño total por adelantado. Tendrás que hacer dos pasadas sobre la lista: una para sumar el strlen() de cada string , luego asignar ese espacio más para el separador y el terminador, luego otro pase cuando realices la concatenación.

Esta pregunta ya tiene una respuesta aquí:

Estoy liberando un char * después de un proceso de concatenación.
Pero recibo este error:

libre (): siguiente tamaño no válido (rápido): 0x0000000001b86170

A continuación está 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); }