다음을 통해 공유


경고 C6279

'variable-name'은 스칼라를 새로 할당하고 배열 삭제와 함께 삭제됩니다.[]

이 경고는 C++ 코드에만 표시되며 호출 함수가 스칼라 new 연산자와 함께 메모리를 일관되지 않게 할당했지만 배열 delete[] 연산자를 사용하여 해제했음을 나타냅니다. 스칼라를 사용하여 new메모리를 할당하는 경우 일반적으로 스칼라 delete를 사용하여 해제해야 합니다.

설명

이 결함의 정확한 파급 효과는 예측하기 어렵습니다. 생성자가 호출되지 않으므로 초기화되지 않은 메모리 사용으로 인해 임의 동작 또는 크래시가 발생할 수 있습니다. 또는 연산자가 재정의된 상황에서 메모리 할당 및 크래시가 발생할 수 있습니다. 분석 도구는 현재 이러한 상황을 구분하지 않습니다.

이러한 종류의 할당 문제를 완전히 방지하려면 C++ STL(표준 라이브러리)에서 제공하는 메커니즘을 사용합니다. 여기에는 < a0/> unique_ptr및 컨테이너(예: vector.)가 포함shared_ptr됩니다. 자세한 내용은 스마트 포인터 및C++ 표준 라이브러리를 참조하세요.

코드 분석 이름: NEW_ARRAY_DELETE_MISMATCH

예시

다음 코드는 경고 C6279를 생성합니다. A 은 다음을 사용하여 new 할당되지만 다음을 사용하여 delete[]삭제됩니다.

class A
{
  // members
};

void f()
{
   A *pA = new A;
   //code ...
   delete[] pA;
}

다음 코드는 대신 사용하여 delete 이 경고를 방지합니다.

class A
{
  // members
};

void f()
{
   A *pA = new A;
   //code ...
   delete pA;
}

참고 항목