Freigeben über


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 Speicherbelegungen belegt hat und diesen Speicher mit einer Funktion aus einer anderen Familie der Speicherbelegungen freigegeben hat.

So wird diese Warnung z. B. ausgegeben, wenn Speicher mit malloc belegt, 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++)