Что такое ошибка glibc free / malloc / realloc, неверный следующий размер / неверный указатель и как ее исправить?
Скорее всего, вы видите этот вопрос, потому что ваш вопрос был закрыт как дубликат этого. Для относительно полного списка связанных вопросов, пожалуйста, смотритеДлинный список возможных дубликатов - выделение памяти C и превышение границ на переполнении стека мета.
Пример вопросаОтсвободный символ *: неверный следующий размер (быстрый) спросилNoobie на 2014-04-11.
Я освобождаюchar*
после процесса конкатенации, но я получаю эту ошибку:
free(): invalid next size (fast): 0x0000000001b86170
Это мой код:
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);
}
Общий вопросПри запуске моей программы я вижу сообщение об ошибке, подобное этому:
*** glibc detected *** ./a.out: free(): corrupted unsorted chunks: 0x12345678 ***
Подробная информация может содержать любое из следующего после*** glibc detected ***
и имя программы, и сообщение сопровождается шестнадцатеричным адресом (показанным как 0x12345678) и другим***
:
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
Это происходит во время вызоваfrobnicate()
функция; что не так с этой функцией?