C6280
Aggiornamento: novembre 2007
C6280
avviso C6280: <variabile> è stato allocato con <funzione>, ma eliminato con <funzione>
L'avviso indica che nella funzione chiamante la memoria è stata allocata in maniera incoerente con una funzione di una famiglia di allocazione della memoria e liberata con una funzione di un'altra famiglia.
Questo avviso, ad esempio, potrebbe essere generato se la memoria venisse allocata con malloc ma liberata con GlobalFree o delete. Si noti che nei casi specifici di mancata corrispondenza tra operatore di matrice new[] e operatore scalare delete, o viceversa, verranno riportati avvisi più precisi.
Esempio
Il seguente codice di esempio genera questo avviso:
#include <stdlib.h>
void f(int arraySize)
{
int *pInt;
pInt = (int *)calloc(arraySize, sizeof (int));
// code ...
delete pInt;
}
Per risolvere il problema, utilizzare il seguente codice di esempio:
#include <stdlib.h>
void f(int arraySize)
{
int *pInt;
pInt = (int *)calloc(arraySize, sizeof (int));
// code ...
free(pInt);
}
Per definizioni di API diverse è possibile utilizzare heap diversi. Per GlobalAlloc, ad esempio, si utilizza l'heap di sistema, mentre la liberazione avviene mediante l'heap C. L'errore potrebbe determinare arresti anomali del sistema e danneggiamenti della memoria.