Compartir a través de


C6280

Actualización: noviembre 2007

C6280

Advertencia C6280: <variable> está asignado a <función>, pero eliminado con <función>

Esta advertencia indica que la función de llamada ha asignado memoria de manera incoherente, puesto que ha utilizado una función de una familia de asignación de memoria para asignarla y otra distinta para liberarla.

Por ejemplo, se genera esta advertencia si la memoria se asigna con malloc pero se libera con GlobalFree o delete. Tenga en cuenta que en los casos concretos de falta de concordancia entre new[] de matriz y delete de escalar (o viceversa), se muestran advertencias más precisas en su lugar.

Ejemplo

El siguiente ejemplo de código genera esta advertencia:

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

Para corregir esta advertencia, utilice el siguiente código de ejemplo:

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

Definiciones de API diferentes pueden utilizar montones distintos. Por ejemplo, GlobalAlloc utiliza el montón sistema y free utiliza el montón de C. Es probable que este defecto produzca daños en la memoria y bloqueos.

Vea también

Referencia

calloc

malloc

free

operator new (<new>)

delete Operator (C++)