次の方法で共有


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)