Предупреждение 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_ptrvector Дополнительные сведения см. в разделе "Смарт-указатели " и "Стандартная библиотека C++".