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++ 标准库参考。