Freigeben über


C6280

C6280

Warnung C6280: <Variable> wird mit <Funktion> zugeordnet, aber mit <Funktion> gelöscht.

Diese Warnung gibt an, dass die aufrufende Funktion Speicher inkonsistent mit einer Funktion aus einer Familie der Speicherzuordnungen zugeordnet hat und diesen Speicher mit einer Funktion aus einer anderen Familie der Speicherzuordnungen freigegeben hat.

So wird diese Warnung z. B. ausgegeben, wenn Speicher mit malloc zugeordnet, aber mit GlobalFree oder delete freigegeben wird. In den bestimmten Fällen, in denen Konflikte zwischen new[]-Array- und delete-Skalaroperationen auftreten (oder umgekehrt), werden statt dieser Warnung genauere Warnungen ausgegeben.

Beispiel

Im folgenden Beispielcode wird diese Warnung generiert:

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

So korrigieren Sie die Warnung unter Verwendung des folgenden Beispielcodes

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

Andere API-Definitionen können andere Heaps verwenden, so verwendet GlobalAlloc z. B. den Systemheap und free den C-Heap. Dieser Fehler kann zu Speicherbeschädigungen und Abstürzen führen.

Siehe auch

Referenz

calloc
malloc
free
operator new (<new>)
delete Operator (C++)