警告 C6388
' argument ' 可能不是 ' value ':這不符合函式 ' function-name ' 的規格: Lines: x, y
備註
這個警告表示指定的內容中正在使用非預期的值。 當做引數傳遞至不預期值的函式時,通常會回報此警告。
程式碼分析名稱: INVALID_PARAM_VALUE_2
範例
下列程式碼會產生警告 C6388,因為 DoSomething
預期會有 Null 值,但可能傳遞非 Null 值:
// C6388_warning.cpp
#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);
}
若要更正此警告,請使用下列範例程式碼:
// C6388_no_warning.cpp
#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++ 標準程式庫 。