次の方法で共有


C6260

警告 C6260: 通常、sizeof * sizeof は不適切です。文字数またはバイト数を使用しようとしましたか?

この警告は、2 つの sizeof 演算の結果が乗算されたことを示します。C/C++ sizeof 演算子は、オブジェクトが使用するストレージのバイト数を返します。一般に、これを別の sizeof 演算で乗算することは不適切です。なぜなら、通常、求めたいものはオブジェクト内のバイト数または配列内の要素数 (たとえば、配列内のワイド文字の数) だからです。

sizeof 演算子には、直観的ではない動作がいくつか関連付けられています。たとえば、C では、文字が整数型であるために sizeof ('\0') == 4, です。C++ では、文字リテラルの型が char なので sizeof ('\0') == 1 です。ただし、C と C++ のいずれにおいても、以下は true です。

sizeof ("\0") == 2. 

使用例

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

#include <windows.h>

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

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

#include <windows.h>

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

参照

関連項目

sizeof 演算子

sizeof 演算子 (c)