поврежденные несортированные куски при вызове free ()

*** glibc detected *** ./a.out: free(): corrupted unsorted chunks: 0x00000000007646b0 *** *** glibc detected *** ./a.out: malloc(): memory corruption: 0x00000000007635a0 *** 

Я получаю вышеуказанную ошибку. Но я уверен, что после освобождения я не использую память. Почему я получаю вышеуказанную ошибку?

Все кучи хранят в себе определенные виды метаданных. Когда вы делаете malloc или free, куча часто выполняет некоторые функции сохранения книг в куче. Если он обнаруживает что-то совершенно неожиданное в метаданных, он обычно сбой.

Обычные операции кучи вряд ли вызовут такие проблемы, поэтому ваша программа, скорее всего, станет причиной. Поскольку ваша программа имеет доступ ко всей памяти в процессе, включая метаданные кучи, ваша программа могла бы случайно перезаписать некоторые метаданные.

Вероятная причина заключается в записи за пределами выделенного буфера. Эта запись, скорее всего, будет разрешена и, скорее всего, испортит метаданные кучи. Когда это обнаружено кучей, ваша программа обычно прерывается.

Возможно, вы пытаетесь освободить указатель, который неправильно указывает на динамически распределенную память.