Память освобождается более одного раза без выделения
Этот дефект возникает, когда блок памяти освобождается более одного раза с помощью free функция без промежуточного распределения.
Когда указателю назначается динамическая память с malloc, calloc или reallocуказывает на расположение памяти в куче. При использовании free на этом указателе соответствующий блок памяти освобождается для перераспределения. Попытка освободить этот блок памяти может привести к сбою сегментации.
Исправление зависит от первопричины дефекта. Проверьте, не был ли выделен блок памяти указателю между первым освобождением и вторым. В противном случае удалите второй free заявление.
Рекомендуется после освобождения блока памяти присвоить соответствующий указатель NULL. Перед освобождением указателей проверьте их на наличие значений NULL и обработайте ошибку. Таким образом, вы защищены от освобождения уже освобожденного блока.
| Группа: Динамическая память |
| Язык: C | C++ |
| По умолчанию: Вкл. |
Синтаксис командной строки: DOUBLE_DEALLOCATION |
| Воздействие: Высокое |
| CWE ID: 415, 825 |