C6276
Aviso C6276: converter entre tipos de seqüência de caracteres diferentes semanticamente: char * para wchar_t *.Uso de seqüência de caracteres inválida pode levar a um comportamento indefinido
Este aviso indica uma projeção potencialmente incorreta de uma seqüência de caracteres ANSI (char_t*) para uma seqüência de caracteres UNICODE (wchar_t *).Como cadeias de caracteres UNICODE tem um tamanho de caractere de 2 bytes, essa conversão pode trazer seqüências de caracteres que não são finalizadas corretamente.Usar tais cadeias de caracteres com a biblioteca de funções wcs * poderia causar estouros de buffer e violações de acesso.
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, acrescentando a letra l para representar o caractere ASCII como um caractere extenso:
#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 de manipulação de cadeia de caracteres seguras, wcscpy_s, para corrigir esse aviso:
#include <windows.h>
VOID f()
{
WCHAR szBuffer[8];
LPWSTR pSrc;
pSrc = L"a";
wcscpy_s(szBuffer,8,pSrc);
}