共用方式為


C6384

更新:2007 年 11 月

警告 C6384: 將指標的大小除以其他值

這項警告表示大小計算可能不正確。若要計算陣列中的元素數目,您有時候會將陣列的大小除以第一個元素的大小。不過,當陣列實際上是指標時,結果通常會與預期不同。

如果指標是函式參數且未傳遞緩衝區大小,就不可能計算可用的最大緩衝區。在本機配置指標時,應該使用配置所用的大小。

範例

下列程式碼將產生出這個警告:

#include <windows.h>
#include <TCHAR.h>

#define SIZE 15

void f( )
{
  LPTSTR dest = new TCHAR[SIZE];
  char src [SIZE] = "Hello, World!!";
  if (dest)
  {
    _tcsncpy(dest, src, sizeof dest  / sizeof dest[0]); 
  }
}

若要更正這項警告,請依下列程式碼所示傳遞緩衝區大小:

#include <windows.h>
#include <TCHAR.h>

#define SIZE 15

void f( )
{
  LPTSTR dest = new TCHAR[SIZE];
  char src [SIZE] = "Hello, World!!";
  if (dest)
  {
    _tcsncpy(dest, src, SIZE);
  }
}

若要使用安全的字串函式 function _tcsncpy_s 來修正這項警告,請使用下列程式碼:

void f( )
{
  LPTSTR dest = new TCHAR[SIZE];
  char src [SIZE] = "Hello, World!!";
  if (dest)
  {
   _tcsncpy_s(dest, SIZE, src, SIZE);
  }
} 

請參閱

參考

_mbsnbcpy_s, _mbsnbcpy_s_l

sizeof Operator