다음을 통해 공유


C6388

경고 C6388: <argument>이(가) <value>이(가) 아닐 수 있습니다. 이 경우 <function name> 함수의 사양과 일치하지 않습니다. 줄: x, y

이 경고는 지정된 컨텍스트에 예기치 않은 값이 사용되고 있음을 나타냅니다.이 경고는 일반적으로 특정 값을 해당 값이 사용되지 않는 함수에 인수로 전달할 경우 보고됩니다.

예제

다음 C++ 코드에서는 DoSomething에 null 값이 필요하지만 잠재적으로 null이 아닌 값이 전달될 수 있기 때문에 이 경고가 생성됩니다.

#include <string.h>
#include <malloc.h>
#include <sal.h>

void DoSomething( _Pre_ _Null_ void* pReserved );

void f()
{
    void* p = malloc( 10 );
    DoSomething( p );  // Warning C6388
    // code...
    free(p);
}

이 경고를 해결하려면 다음 샘플 코드를 사용합니다.

#include <string.h>
#include <malloc.h>
#include <sal.h>

void DoSomething( _Pre_ _Null_ void* pReserved );
void f()
{
    void* p = malloc( 10 );
    if (!p)
    {
        DoSomething( p );  
    }
    else
    {
        // code...
        free(p);
    }
}

Malloc과 free의 사용은 메모리 누수 및 예외와 같은 많은 함정이 있다는 사실을 주목해야 합니다. 이러한 유형의 누수와 예외 문제를 방지하려면, c + + 표준 템플릿 라이브러리 (STL)에서 제공하는 메커니즘을 사용합니다.여기에는 shared_ptr, unique_ptr, 및 vector가 포함됩니다.자세한 내용은 스마트 포인터(최신 C++)C++ 표준 라이브러리 참조를 참조하십시오.