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 имеет много опасностей в терминах утечки памяти и исключений.Чтобы избежать все такие проблемы утечек и исключений, используйте механизмы, предоставляемые библиотекой стандартных шаблонов (STL) C++.Они включают shared_ptr, unique_ptr и vector.Дополнительные сведения см. в разделах Интеллектуальные указатели (современный C++) и Справочник по стандартной библиотеке C++.