C6280

업데이트: 2007년 11월

C6280

경고 C6280: <variable>이(가) <function>(을)를 사용해 할당되었지만 <function>(으)로 삭제되었습니다.

이 경고는 호출하는 함수에서 특정 메모리 할당 패밀리에 속한 함수를 사용하여 메모리를 할당했지만 다른 메모리 할당 패밀리에 속한 함수를 사용하여 메모리를 해제했음을 나타냅니다.

예를 들어, 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는 시스템 힙을 사용하고 free는 C 힙을 사용합니다. 이 오류로 인해 메모리 손상과 충돌이 발생할 수 있습니다.

참고 항목

참조

calloc

malloc

free

operator new (<new>)

delete Operator (C++)