Freigeben über


Warnung C6279

'Variable-Name' wird skalar neu zugeordnet, mit Arraylöschung gelöscht []

Diese Warnung wird nur im C++-Code angezeigt und weist darauf hin, dass die aufrufende Funktion dem Skalaroperator new inkonsistent Speicher zugewiesen hat, sie jedoch mit dem Arrayoperator delete[] freigegeben hat. Wenn Speicher mit Skalar newzugewiesen wird, sollte er in der Regel mit Skalar deletefreigegeben werden.

Hinweise

Es ist schwierig, die genauen Auswirkungen dieses Fehlers vorherzusagen. Es kann zu zufälligen Verhaltensweisen oder Abstürze führen, weil nicht initialisierter Arbeitsspeicher als Konstruktoren nicht aufgerufen werden. Oder der Fehler führt zu Speicherbelegungen und Abstürzen in Situationen, in denen Operatoren überschrieben werden. Das Analysetool unterscheidet derzeit nicht zwischen diesen Situationen.

Um diese Arten von Zuordnungsproblemen vollständig zu vermeiden, verwenden Sie die Mechanismen, die von der C++-Standardbibliothek (STL) bereitgestellt werden. Dazu gehören shared_ptr, , unique_ptrund Container wie vector. Weitere Informationen finden Sie unter Intelligente Zeiger und C++-Standardbibliothek.

Codeanalysename: NEW_ARRAY_DELETE_MISMATCH

Beispiel

Der folgende Code generiert Warnung C6279. A wird mithilfe von new , aber gelöscht mit delete[]:

class A
{
  // members
};

void f()
{
   A *pA = new A;
   //code ...
   delete[] pA;
}

Im folgenden Code wird diese Warnung stattdessen vermieden delete :

class A
{
  // members
};

void f()
{
   A *pA = new A;
   //code ...
   delete pA;
}

Siehe auch