共用方式為


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

將 sizeof 運算子