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