Поделиться через


C6327

Предупреждение C6327: потенциальное переполнение буфера. SysAllocStringLen копирует <количество> знаков из строки <переменная> без проверки числа копируемых знаков. Возможен сбой кода.

Это предупреждение указывает на возможное переполнение буфера. Функция SysAllocStringLen выделяет память для новой строки и затем копирует указанное количество знаков из заданной строки. Поскольку SysAllocStringLen не проверяет количество копируемых знаков, то, если указанное число знаков превышает количество знаков в строке, может произойти сбой кода. Чтобы избежать переполнения буфера, необходимо передавать функции SysAllocString правильное количество знаков.

Пример

Это предупреждение создается в следующем примере кода:

#include <windows.h>

void f ()
{
  BSTR bstr;
  bstr = SysAllocStringLen(L"txt", 5); // warning 6327
  // code...
  SysFreeString(bstr);
}

Для устранения этого предупреждения передайте правильную длину строки, как указано в следующем коде:

#include <windows.h>
void f()
{
  BSTR bstr;
  wchar_t *greeting=L"Hello, World!";
  
  bstr = SysAllocStringLen(greeting, sizeof(greeting));
  // code...
  SysFreeString(bstr);
} 

См. также

Ссылки

sizeof Operator

sizeof Operator (C)