Поделиться через


C6280

Предупреждение C6280: <переменная> выделяется <функцией>, но удаляется <функцией>.

Данное предупреждение означает, что вызывающая функция несогласованно выделила память с помощью функции из одного семейства выделения памяти, а освободила ее с помощью функции из другого семейства выделения памяти.

Например, это предупреждение будет создано, если память выделяется с помощью функции malloc, а освобождается с помощью функции GlobalFree или delete. Обратите внимание, что в определенных случаях несоответствия между массивом new[] и скалярной функцией delete (или наоборот) выводятся более конкретные предупреждения.

Пример

Это предупреждение создается в следующем примере кода:

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

Для устранения этого предупреждения используйте следующий пример кода:

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

Разные определения интерфейсов API могут использовать разные кучи. Например функция GlobalAlloc использует системную кучу, а функция GlobalFree использует кучу C. Эта ошибка может привести к повреждениям памяти и сбоям.

См. также

Ссылки

calloc

malloc

free

operator new (<new>)

delete Operator (C++)