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++ Standard Template Library (STL) 提供的機制。其中包括 shared_ptr、 unique_ptr和 vector。如需詳細資訊,請參閱智慧型指標 (現代 C++)與C++ 標準程式庫參考。