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