Condividi tramite


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.

Vedere anche

Riferimenti

calloc

malloc

free

operator new (<new>)

delete Operator (C++)