C6276
C6276 Uyarı: arasında anlam farklı dize türleri artığını: char * wchar_t * için.Geçersiz dize kullanımını tanımsız davranışına neden olabilir
Bu uyarıyı bir ANSI dizeden büyük olasılıkla yanlış bir cast gösterir (char_t*) bir UNICODE dizesi (wchar_t *).Karakter boyutu 2 baytlık UNICODE dizeleri sahip olduğundan, bu cast doğru Sonlandırılmamış dize niceliğe.Bu tür dizeleriyle wcs * Kütüphane işlevleri ile arabellek taşmaları neden ve ihlalleri erişebilirsiniz.
Örnek
Aşağıdaki kod, bu uyarı oluşturur:
#include <windows.h>
VOID f()
{
WCHAR szBuffer[8];
LPWSTR pSrc;
pSrc = (LPWSTR)"a";
wcscpy(szBuffer, pSrc);
}
Aşağıdaki kod, geniş bir karakter olarak ASCII karakteri temsil etmek için l Harfi ekleyerek bu uyarıyı düzeltir:
#include <windows.h>
VOID f()
{
WCHAR szBuffer[8];
LPWSTR pSrc;
pSrc = L"a";
wcscpy(szBuffer, pSrc);
}
Aşağıdaki kod güvenli dize işleme işlevini kullanır wcscpy_s, bu uyarı düzeltmek için:
#include <windows.h>
VOID f()
{
WCHAR szBuffer[8];
LPWSTR pSrc;
pSrc = L"a";
wcscpy_s(szBuffer,8,pSrc);
}