Resource leak

Поток файла, не закрытый перед FILE концы осциллографа указателя или указатель повторно присвоены

Описание

Этот дефект происходит, когда вы открываете поток файла при помощи FILE указатель, но не закрывает его прежде:

  • Конец осциллографа указателя.

  • Присвоение указателя на другой поток.

Риск

Если вы не делаете указателей файла версии явным образом как можно скорее, отказ может произойти из-за исчерпания ресурсов.

Фиксация

Закройте FILE указатель перед концом его осциллографа, или прежде чем вы присвоите указатель на другой поток.

Примеры

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

#include <stdio.h>

void func1( void ) {
    FILE *fp1;
    fp1 = fopen ( "data1.txt", "w" );
    fprintf ( fp1, "*" );

    fp1 = fopen ( "data2.txt", "w" );
    fprintf ( fp1, "!" );
    fclose ( fp1 );
}

В этом примере, указатель файла fp1 указывает на файл data1.txt. Перед fp1 явным образом отделен от потока файла data1.txt, это используется, чтобы получить доступ к другому файлу data2.txt.

Коррекция — выпускает FILE Указатель

Одна возможная коррекция должна явным образом отделить fp1 от потока файла data1.txt.

#include <stdio.h>

void func1( void ) {
    FILE *fp1;
    fp1 = fopen ( "data1.txt", "w" );
    fprintf ( fp1, "*" );
    fclose(fp1);

    fp1 = fopen ( "data2.txt", "w" );                  
    fprintf ( fp1, "!" );
    fclose ( fp1 );
}

Информация о результате

Группа: управление ресурсами
Язык: C | C++
Значение по умолчанию: На для рукописного кода, прочь для сгенерированного кода
Синтаксис командной строки: RESOURCE_LEAK
Удар: высоко
ID CWE: 772
Введенный в R2015b