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