Предупреждение C6388
Аргумент не может быть "value": это не соответствует спецификации функции "имя-функция": строки: x, y
Замечания
Это предупреждение означает, что в указанном контексте используется непредвиденное значение. Это предупреждение обычно сообщается для значений, передаваемых в качестве аргументов функции, которая не ожидает его.
Имя анализа кода: INVALID_PARAM_VALUE_2
Пример
Следующий код создает предупреждение C6388, так как DoSomething
ожидает значение 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). К ним относятся, например, unique_ptr
и контейнеры, такие как.shared_ptr
vector
Дополнительные сведения см. в разделе "Смарт-указатели " и "Стандартная библиотека C++".