Compartilhar via


C28197

C28197 de aviso: Possivelmente vazamento de memória

Esse erro é relatado para vazamentos de memória e de recurso quando o recurso com potencial para outro local.

Os pontos de ponteiro a memória alocada ou outro recurso atribuído que não é liberado explicitamente.Esse erro é geralmente devido às anotações inadequadas na função chamada, embora as anotações inadequadas na função de chamada também podem fazer essa mais provável.

Esse erro pode ser reportado na saída da função se um argumento de entrada tem uma anotação de __drv_freesMem ou de __drv_aliasesMem .Este aviso normalmente indica ou um escape válido ou que uma função chamada pela função atual precisa de anotação adicional.

Em particular, a ausência de _In_ básico e as anotações de _Out_ tornam esse aviso bastante provavelmente, embora as anotações de __drv_aliasesMem e de __drv_freesMem possam ser necessário também.Um é um resultado falso positivo provável de uma anotação ausente de _In_ .

As funções que recebem um ponteiro e um alias ele (evitando assim um escape) devem ser anotadas com __drv_aliasesMem.Se você criar uma função que insere um objeto em uma estrutura global, ou a passa a uma função de sistema que fazer isso, você deve adicionar a anotação de __drv_aliasesMem .

As funções que liberam a memória devem ser anotadas com __drv_freesMem.As funções principais que liberam a memória já têm essa anotação.

Exemplo

O exemplo de código gera este aviso:

char *p = (char *)malloc(10);
test(p);   // does not save a copy of p

O exemplo de código a seguir evita este aviso:

char *p = (char *)malloc(10);
test(p);   // does not save a copy of p
free(p);