exponenta event banner

MISRA C:2012 Правило 22.6

Значение указателя на FILE не должен использоваться после закрытия связанного потока

Описание

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

Значение указателя на FILE не должен использоваться после закрытия связанного потока.

Объяснение

Стандарт утверждает, что значение FILE* после закрытия связанного с ним потока указатель становится неопределенным.

Внедрение Polyspace

Это правило можно проверить только с помощью анализа Bug Finder.

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

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

Примеры

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

#include <stdio.h>

void func(void) {
    FILE *fp;
    void *ptr;

    fp = fopen("tmp","w");
    if(fp != NULL) {
        fclose(fp);
        fprintf(fp,"text"); // Non-compliant
    }
}

В этом примере поток, связанный с FILE* указатель fp закрыт с помощью fclose функция. Правило нарушено FILE* указатель fp используется до повторного открытия потока.

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

Группа: Ресурсы
Категория: Обязательно
Категория СМЖЛ: обязательная
Представлен в R2015b