C6327
更新:2007 年 11 月
警告 C6327: 可能的緩衝區滿溢: SysAllocStringLen 複製 <number> 個字元 (從字串 <variable>),但未驗證要複製的字元數。程式碼可能會損毀
這則警告表示可能會發生緩衝區滿溢。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);
}