exponenta event banner

Правило AUTOSAR C++ 14 M0-2-1

Объект не должен быть назначен перекрывающемуся объекту

Описание

Определение правила

Объект не должен быть назначен перекрывающемуся объекту.

Объяснение

При назначении объекта другому объекту с перекрывающейся памятью поведение не определено.

Исключения:

  • Объект назначается другому объекту с точно перекрывающейся памятью и совместимым типом.

  • Вы копируете один объект в другой с помощью memmove.

Поиск неисправностей

Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.

Примеры

развернуть все

void func (void) {
    union {
        short i;
        int j;
    } a = {0}, b = {1};
    
    a.j = a.i;   //Noncompliant
    a = b;       //Compliant
}

В этом примере правило нарушается, когда a.i присвоен a.j поскольку эти две переменные имеют перекрывающиеся области памяти.

Проверить информацию

Группа: Вопросы, не зависящие от языка
Категория: Обязательно, Автоматизировано
Представлен в R2019a