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


C6327

Обновлен: Ноябрь 2007

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

The sizeof Operator