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.