O que é um erro de ponteiro glibc free / malloc / realloc próximo tamanho / inválido e como corrigi-lo?
Você provavelmente está vendo esta pergunta porque sua pergunta foi encerrada como uma duplicata. Para uma lista moderadamente completa de perguntas relacionadas, consulteUma longa lista de possíveis duplicatas - alocação de memória C e limites de ultrapassagem no Meta Stack Overflow.
Exemplo de perguntaDechar grátis *: próximo tamanho inválido (rápido) a pedido denoobie em 11/04/2014.
Estou liberando umchar*
após um processo de concatenação, mas recebo este erro:
free(): invalid next size (fast): 0x0000000001b86170
Este é o meu 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);
}
Pergunta genéricaAo executar meu programa, vejo uma mensagem de erro como esta:
*** glibc detected *** ./a.out: free(): corrupted unsorted chunks: 0x12345678 ***
As informações detalhadas podem conter qualquer um dos seguintes itens após o*** glibc detected ***
e o nome do programa, e a mensagem é seguida por um endereço hexadecimal (mostrado como 0x12345678) e outro***
:
free(): corrupted unsorted chunks: 0x12345678
free(): invalid next size (fast): 0x12345678
free(): invalid next size (normal): 0x12345678
free(): invalid pointer: 0x12345678
free(): invalid size: 0x12345678
malloc(): corrupted unsorted chunks: 0x12345678
malloc(): corrupted unsorted chunks 2: 0x12345678
malloc(): memory corruption: 0x12345678
malloc(): memory corruption (fast): 0x12345678
malloc(): smallbin double linked list corrupted: 0x12345678
munmap_chunk(): invalid pointer: 0x12345678
realloc(): invalid next size (fast): 0x12345678
realloc(): invalid old size (fast): 0x12345678
realloc(): invalid pointer: 0x12345678
corrupted double-linked list: 0x12345678
Isso acontece ao chamar ofrobnicate()
função; o que há de errado com essa função?