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