C6276
aviso C6276: Conversão entre tipos de cadeia de caracteres semanticamente diferentes: char* para wchar_t*.O uso de cadeia de caracteres inválida pode levar a comportamento indefinido
Esse aviso indicar uma conversão possivelmente incorreta de uma cadeia de caracteres ANSI (char_t*) em uma cadeia de caracteres UNICODE (wchar_t *).Como as cadeias de caracteres UNICODE com um tamanho de caracteres de 2 bytes, essa é convertido pode produzir as cadeias de caracteres que não são terminadas corretamente.Usar essas cadeias de caracteres com a biblioteca de wcs* das funções poderia causar violações de acesso e excesso de buffer.
Exemplo
O código a seguir gera este aviso:
#include <windows.h>
VOID f()
{
WCHAR szBuffer[8];
LPWSTR pSrc;
pSrc = (LPWSTR)"a";
wcscpy(szBuffer, pSrc);
}
O código a seguir corrige esse aviso com a letra L para representar o caractere ASCII como um caractere largo:
#include <windows.h>
VOID f()
{
WCHAR szBuffer[8];
LPWSTR pSrc;
pSrc = L"a";
wcscpy(szBuffer, pSrc);
}
O código a seguir usa a função segura de manipulação de cadeia de caracteres, wcscpy_s, para corrigir esse aviso:
#include <windows.h>
VOID f()
{
WCHAR szBuffer[8];
LPWSTR pSrc;
pSrc = L"a";
wcscpy_s(szBuffer,8,pSrc);
}