V2511. MISRA. Memory allocation and deallocation functions should not be used.


Данное диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.

Анализатор выдаст предупреждение, если встретит использование функций и операторов выделения \ освобождения динамической памяти, таких как:

  • malloc;
  • realloc;
  • calloc;
  • free;
  • new;
  • delete.

Функции работы с динамической памятью являются потенциальным источником проблем, так как их неправильное использование может привести к утечкам памяти, неопределённому поведению и прочим ошибкам. Более того – это может стать причиной возникновения уязвимости в приложении.

Пример кода, на который анализатор выдаст предупреждение:

int* imalloc(size_t cnt)
{
  return (int*)malloc(cnt * sizeof(int));
}

Для C анализатор также выдаст предупреждение, если обнаружит определение макроса с одним из соответствующих имён.

Согласно Common Weakness Enumeration, потенциальные ошибки, найденные с помощью этой диагностики, классифицируются как CWE-676.


Найденные ошибки

Проверено проектов
344
Собрано ошибок
12 899

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;