Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top

Вебинар: Стратегия без иллюзий: как превращать цели в результаты - 19.08

menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V2548. MISRA. The address of an object with local scope should not be passed out of its scope.

05 Июн 2019

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

Копирование адреса объекта в указатель/ссылку с большим временем жизни может привести к возникновению "висячего" указателя/ссылки после того, как исходный объект перестанет существовать. Это является нарушением безопасности памяти. Использование данных, на которые указывает "висячий" указатель/ссылка, приводит к неопределенному поведению.

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

int& Foo( void )
{
  int some_variable;
  ....
  return some_variable;
}

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

#include <stddef.h>
void Bar( int **ptr )
{
  int some_variable;
  ....
  if (ptr != NULL)
    *ptr = &some_variable;
}

Диагностическое правило классифицируется как:

  • MISRA-C-2012-Rule-18.6
  • MISRA-C-2023-Rule-18.6
  • MISRA-CPP-2008-Rule-7.5.2
  • MISRA-CPP-2023-Rule-6.8.3

Ты поймал бага за сек!
А мы в коде ловим их за доли секунды. Хочешь проверить?

Попробовать бесплатно