Avviso C6276
Eseguire il cast tra tipi di stringa semanticamente diversi. L'uso di una stringa non valida può causare un comportamento non definito.
Questo avviso indica un cast potenzialmente errato da una stringa di caratteri stretta (char*
) a una stringa di caratteri wide (wchar_t*
).
Osservazioni:
Poiché il compilatore Microsoft implementa stringhe wide con una dimensione di carattere di 2 byte, il cast da una stringa stretta potrebbe produrre stringhe non terminate correttamente. Se si usano tali stringhe con le wcs*
funzioni nella libreria di runtime, potrebbero causare sovraccarichi del buffer e violazioni di accesso.
Nome dell'analisi del codice: CHAR_TO_WCHAR_CAST
Esempio
Il codice seguente genera l'avviso C6276. È causato da un cast non corretto della stringa stretta "a" (2 byte, uno per "a" e uno per il terminatore Null) a una stringa wide (un carattere wide a2 byte senza terminatore Null):
#include <windows.h>
void f()
{
WCHAR szBuffer[8];
LPWSTR pSrc;
pSrc = (LPWSTR)"a";
wcscpy_s(szBuffer, pSrc);
}
Il codice seguente corregge questo avviso. Rimuove il cast del problema e aggiunge un L
prefisso alla stringa per definirlo come stringa di caratteri wide terminata correttamente:
#include <windows.h>
void f()
{
WCHAR szBuffer[8];
LPWSTR pSrc;
pSrc = L"a";
wcscpy_s(szBuffer, pSrc);
}
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per