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