Freigeben über


Warnung C6260

sizeof * sizeof ist fast immer falsch, haben Sie beabsichtigen, eine Zeichenanzahl oder eine Byteanzahl zu verwenden?

Diese Warnung gibt an, dass die Ergebnisse von zwei sizeof Vorgängen miteinander multipliziert wurden.

Hinweise

Der C/C++ sizeof -Operator gibt die Anzahl der Bytes des Speichers zurück, den ein Objekt verwendet. Es ist in der Regel falsch, sie mit einem anderen sizeof Vorgang zu multiplizieren. In der Regel interessieren Sie sich für die Anzahl der Bytes in einem Objekt oder die Anzahl der Elemente in einem Array (z. B. die Anzahl von Breitzeichen in einem Array).

Es gibt ein unintuitives Verhalten, das dem sizeof Operator zugeordnet ist. Beispielsweise in C, sizeof ('\0') == 4weil ein Zeichen von einem integralen Typ ist. In C++ lautet charder Typ eines Zeichenliterals , also sizeof ('\0') == 1. In C und C++ gilt jedoch die folgende Beziehung:

sizeof ("\0") == 2

Codeanalysename: USEOFBYTEAREA

Beispiel

Der folgende Code generiert diese Warnung:

#include <windows.h>

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

So korrigieren Sie die Warnung unter Verwendung des folgenden Codes

#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 ...
}

Siehe auch