경고 C6283
'variable-name'은 배열 새 []와 함께 할당되지만 스칼라 삭제를 사용하여 삭제됩니다.
이 경고는 C++ 코드에만 나타나며 호출 함수가 배열 new []
연산자와 함께 메모리를 일관되지 않게 할당했지만 스칼라 delete
연산자를 사용하여 해제했음을 나타냅니다.
설명
이 결함으로 인해 누수, 메모리 손상 및 운영자가 재정의된 상황에서 충돌이 발생할 수 있습니다. 메모리가 배열과 함께 할당되는 경우 일반적으로 배열new []
delete[]
을 사용하여 해제해야 합니다.
경고 C6283은 정수 또는 문자와 같은 기본 형식의 배열에만 적용됩니다. 배열의 요소가 클래스 형식의 개체인 경우 경고 C6278 이 발생합니다.
메모리 누수 및 delete
예외 측면에서 많은 문제를 사용하고 new
있습니다. 이러한 종류의 잠재적 누출을 완전히 방지하려면 C++ STL(표준 라이브러리)에서 제공하는 메커니즘을 사용합니다. 여기에는 < a0/> unique_ptr
및 컨테이너(예: vector
.)가 포함shared_ptr
됩니다. 자세한 내용은 스마트 포인터 및C++ 표준 라이브러리를 참조하세요.
코드 분석 이름: PRIMITIVE_ARRAY_NEW_DELETE_MISMATCH
예시
다음 코드는 경고 C6283을 생성합니다. str
을 사용하여 new ...[...]
할당되지만 일치하지 않는 함수 delete
를 사용하여 해제됩니다.
void f( )
{
char *str = new char[50];
delete str;
}
다음 코드는 일치하는 함수 delete[]
를 사용하여 이 경고를 수정합니다.
void f( )
{
char *str = new char[50];
delete[] str;
}
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기