C6384
警告 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);
}
}