C6388
警告 C6388: <引数> は <値> ではない可能性があります: この動作は、関数 <関数名> の指定に従っていません: 行: 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 などがあります。詳細については、「スマート ポインター (Modern C++)」および「C++ 標準ライブラリ リファレンス」を参照してください。