경고 C26404
잘못된 상태일 수 있는 항목을 삭제
owner<T>
하지 마세요(r.3)
설명
소유자 포인터가 리소스를 해제하거나 전송하면 "잘못된" 상태가 됩니다. 이러한 포인터를 삭제하면 이중 삭제로 인해 메모리가 즉시 손상되거나 삭제된 리소스가 다른 소유자 포인터에서 액세스될 때 액세스 위반이 발생할 수 있습니다.
코드 분석 이름: DONT_DELETE_INVALID
예 1
값을 전송한 후 소유자 삭제:
gsl::owner<State*> validState = nullptr;
gsl::owner<State*> state = ReadState();
validState = state;
if (!IsValid(state))
delete state; // C26404
예제 2
초기화되지 않은 소유자 삭제:
gsl::owner<Message*> message;
if (popLast)
message = ReleaseMessage();
delete message; // C26404