次の方法で共有


警告 C6260

sizeof * sizeof ほとんど常に間違っています。文字数またはバイト数を使用するつもりでしたか?

この警告は、2 つの sizeof 操作の結果が乗算されたことを示します。

解説

C/c ++ sizeof 演算子は、オブジェクトが使用するストレージのバイト数を返します。 通常、別の sizeof 操作で乗算するのは正しくありません。 通常、オブジェクト内のバイト数や配列内の要素の数 (配列内のワイド文字の数など) に関心があります。

sizeof演算子には直感的でない動作がいくつかあります。 たとえば、C では、文字が整数型であるため、 sizeof ('\0') == 4。 C++ では、文字リテラルの型は char で、sizeof ('\0') == 1 です。 ただし、C と C++ の両方で、次の関係が当てはまります。

sizeof ("\0") == 2

コード分析名: USEOFBYTEAREA

この警告が発生するコード例を次に示します。

#include <windows.h>

void f( )
{
  int i;
  i = sizeof (L"String") * sizeof (WCHAR);
  // code ...
}

この警告を解決するには、次のコードを使用します。

#include <windows.h>

void f( )
{
  // use divide to calculate how many WCHAR characters are in the string
  int i = sizeof (L"String") / sizeof (WCHAR);

  // get the number of bytes in the character array
  int j = sizeof (L"String");

  // code ...
}

関連項目