경고 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;
}
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기