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.