C6383
警告 C6383: 因將元素計數轉換成位元組計數而導致緩衝區滿溢: 參數 <number> 於 <function> 呼叫中時必須是元素計數
這則警告表示需要元素計數時卻傳遞了非常數位元組計數。 一般而言,將變數乘以 sizeof 型別,但程式碼分析建議需要元素計數時,即會發生這個警告。
範例
下列程式碼將產生出這個警告:
#include <string.h>
void f( wchar_t* t, wchar_t* s, int n )
{
// code...
wcsncpy (t, s, n*sizeof(wchar_t)); // warning 6383
// code ...
}
若要更正這則警告,請不要將變數乘以 sizeof 型別,如下列程式碼所示:
void f( wchar_t* t, wchar_t* s, int n )
{
// code
wcsncpy (t, s, n);
// code ...
}
下列程式碼會使用安全字串管理函式來更正這則警告:
void f(wchar_t* t, wchar_t* s, size_t n)
{
// code...
wcsncpy_s( t, sizeof(s), s, n );
// code...
}
請參閱
參考
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l