C6283
Aviso C6283: <variável> é atribuída com a matriz new [], mas excluída com scalar delete
Esse aviso aparece apenas em código C++ e indica que a função de chamada atribuiu memória de maneira inconsistente com o operador de matriz new [], mas foi liberada com o operador de escala delete.Esse defeito pode causar vazamentos, corrupções de memória e, em situações onde operadores foram substituídos, panes.Se a memória for atribuída com a matriz new [], ela será liberada com a atriz delete[].
Exemplo
O código a seguir gera este aviso:
void f( )
{
char *str = new char[50];
// code ...
delete str;
}
Para corrigir esse aviso, use o seguinte código:
void f( )
{
char *str = new char[50];
// code ...
delete[] str;
}
C6283 de aviso se aplica somente a matrizes de tipos primitivos, como de inteiros ou de caracteres.Se os elementos da matriz forem objetos do tipo de classe, o aviso C6278 será emitido.
O uso de new e delete tem muitas armadilhas em termos de vazamentos de memória e exceções.Para evitar esses tipos de vazamentos e problemas de exceção no geral, use os mecanismos que são fornecidos pela STL (Biblioteca de Modelos Padrão) do C++.Incluem shared_ptr, unique_ptr e vector.Para obter mais informações, consulte Ponteiros inteligentes (C++ moderno) e Referência da Biblioteca Padrão C++.