Compartilhar via


C6280

Aviso C6280: <variable> alocados com <function>, mas excluída com <function>

Este aviso indica que a função de chamada inconsistentemente alocada a memória com uma função da família de alocação de memória de um e liberado-lo com uma função a partir de outra família de alocação de memória.

Por exemplo, esse aviso seria produzido se a memória é alocada com malloc , mas liberado com GlobalFree ou delete. Observe que, em casos específicos de incompatibilidades entre matriz new[] e scalar delete (ou vice-versa), avisos de mais precisos são relatados em vez disso.

Exemplo

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

#include <stdlib.h>
void f(int arraySize)
{
  int *pInt;
  
  pInt = (int *)calloc(arraySize, sizeof (int));
  // code ...
  delete pInt;
}

Para corrigir esse aviso, use o exemplo de código a seguir:

#include <stdlib.h>
void f(int arraySize)
{
  int *pInt;
  
  pInt = (int *)calloc(arraySize, sizeof (int));
  // code ...
  free(pInt);
}

Definições de API de diferentes podem usar heaps diferentes. Por exemplo, GlobalAlloc usa a pilha do sistema e livre usa c heap. Esse defeito pode causar corrupção de memória e travamentos.

Consulte também

Referência

calloc

malloc

free

operator new (<new>)

delete Operator (C++)