Освобождение указателя без соответствующего динамического выделения
Этот дефект происходит, когда блок памяти выпустил использование free
функция не была ранее выделена с помощью malloc
, calloc
, или realloc
.
free
функционируйте выпускает блок памяти, выделенной на куче. При попытке получить доступ к местоположению на куче, которую вы не выделили ранее, отказ сегментации может произойти.
Проблема может подсветить ошибки кодирования. Например, вы, возможно, хотели использовать free
функционируйте или предыдущий malloc
функция на различном указателе.
В большинстве случаев можно устранить проблему путем удаления free
оператор. Если указатель не является выделенной памятью от кучи с malloc
или calloc
, вы не должны освобождать указатель. Можно просто снова использовать указатель как требуется.
Если проблема подсвечивает ошибку кодирования, такую как использование free
или malloc
на неправильном указателе откорректируйте ошибку.
Если проблема происходит, потому что вы используете free
функционируйте, чтобы освободить память выделенный с new
оператор, замените free
функция с delete
оператор.
Группа: динамическая память |
Язык: C | C++ |
Значение по умолчанию: On |
Синтаксис командной строки: BAD_FREE |
Удар: высоко |
ID CWE: 404, 590, 762 |