C6279
경고 C6279: <variable>이(가) 스칼라 new를 사용해 할당되었지만 배열 delete []로 삭제되었습니다.
이 경고는 C++ 코드에서만 나타나며 호출하는 함수에서 스칼라 new 연산자를 사용해 메모리를 할당했지만 배열 delete [] 연산자를 사용해 일관성 없이 해제했음을 나타냅니다.메모리를 스칼라 new로 할당한 경우 일반적으로 스칼라 delete로 해제해야 합니다.
이 경우 문제를 발생시킬 수 있는 원인으로는 적어도 세 가지가 있습니다.
배열의 개별 개체에 대한 생성자는 호출되지 않았지만 소멸자는 호출되었습니다.
전역 또는 클래스 전용 operator new와 operator delete가 operator new[] 및 **operator delete[]**와 호환되지 않는 경우 예상치 못한 결과가 발생할 수 있습니다.
이 오류의 정확한 결과는 예측하기 어렵습니다.생성자가 호출되지 않았기 때문에 초기화되지 않은 메모리 사용으로 인해 임의의 동작이나 충돌이 발생할 수 있습니다.또는 연산자가 재정의된 상황에서는 메모리가 할당되어 충돌할 수 있습니다.드문 경우지만 이러한 불일치가 중요하지 않을 수도 있습니다.현재로서는 분석 도구에서 이러한 상황을 구별하지 못합니다.
예제
다음 코드에서는 이 경고를 발생시킵니다.
class A
{
// members
};
void f ( )
{
A *pA = new A;
//code ...
delete[] pA;
}
이 경고를 해결하려면 다음 코드를 사용합니다.
void f( )
{
A *pA = new A;
//code ...
delete pA;
}