Освобождение указателя без соответствующего динамического выделения
Недопустимый свободный от указателя происходит, когда блок памяти выпущенное использование функции free не был ранее выделен с помощью malloc, calloc или realloc.
Функция free выпускает блок памяти, выделенной на куче. При попытке получить доступ к местоположению на куче, которую вы не выделили ранее, отказ сегментации может произойти.
Проблема может подсветить ошибки кодирования. Например, вы, возможно, хотели использовать функцию free или предыдущую функцию malloc на различном указателе.
В большинстве случаев можно устранить проблему путем удаления оператора free. Если указатель не является выделенной памятью от кучи с malloc или calloc, вы не должны освобождать указатель. Можно просто снова использовать указатель как требуется.
Если проблема подсвечивает ошибку кодирования, такую как использование free или malloc на неправильном указателе, исправьте ошибку.
Если проблема происходит, потому что вы используете функцию free, чтобы освободить память выделенный с оператором new, заменяете функцию free на оператор delete.
| Группа: динамическая память |
| Язык: C | C++ |
| Значение по умолчанию: на |
Синтаксис командной строки: BAD_FREE |
| Влияние: высоко |
| ID CWE: 404, 590, 762 |