다음을 통해 공유


경고 C26408

사용(r.10)의 delete 버전을 선호 nothrow 합니다 malloc() free().new

이 경고 플래그는 R.10: 회피 및 에 따라 명시적으로 호출되거나 호출되는 위치를 malloc free 지정합니다free.malloc 이러한 경고에 대한 한 가지 잠재적인 해결 방법은 std::make_unique 사용하여 개체의 명시적 생성 및 소멸을 방지하는 것입니다. 이러한 수정이 허용되지 않는 경우 새 연산자 및 삭제 를 선호해야 합니다. 경우에 따라 예외를 환영 malloc 하지 않고 연산 new delete자의 free nothrow 버전으로 바꿀 수 있습니다.

설명

  • 검사 검색malloc()하려면 호출이 명명 malloc 된 전역 함수를 호출하는지 또는 std::malloc. 함수는 포인터 void 를 반환하고 부호 없는 정수 계열 형식의 매개 변수 하나를 수락해야 합니다.

  • 검색free()하려면 명명된 free std::free 전역 함수를 검사 결과를 반환하지 않고 포인터인 매개 변수 하나를 수락합니다void.

코드 분석 이름: NO_MALLOC_FREE

참고 항목

C++ 핵심 지침 R.10

예제

#include <new>

struct myStruct {};

void function_malloc_free() {
    myStruct* ms = static_cast<myStruct*>(malloc(sizeof(myStruct))); // C26408
    free(ms); // C26408
}

void function_nothrow_new_delete() {
    myStruct* ms = new(std::nothrow) myStruct;
    operator delete (ms, std::nothrow);
}