Evitando o aviso de "tampão de tampão" C6386
-
26-09-2019 - |
Pergunta
No meu código, estou usando uma matriz xyz
de 10 objetos. Quando estou tentando acessar um elemento da matriz usando um índice int não assinado como este: xyz[level]
, Eu recebo 'Buffer Overn' aviso. Logicamente, tenho certeza de que o nível não excede 10. Como evitar esse aviso?
Solução
Provavelmente estou ensinando à minha avó a chupar ovos aqui, mas lembre -se de que "o nível não excederá 10" está errado para uma variedade de tamanho 10:
char a[10];
a[10] = '\0'; // Bug, and "Buffer Overrun" warning.
Outras dicas
Você é verdade claro? Eu nunca recebi esse aviso até agora. Então, verifique duas vezes.
Enfim, você pode usar o
#pragma warning( disable: 6386 )
Directiva do pré-processador. Eu geralmente empurro e coloco isso para a "pilha de pragma"
#pragma warning( push )
#pragma warning( disable : 6386 )
// Some code
#pragma warning( pop )
conforme recomendado aqui.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow