Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Översikt
Jämförelser mellan olika typer av bredder i ett loopvillkor kan leda till att loopen inte avslutas.
Rekommendation
Använd lämpliga typer i loopvillkoret.
Exempel
I det här exemplet kan resultatet av jämförelsen resultera i en oändlig loop om värdet för argumentet: en är större än SHRT_MAX:
void InfiniteLoop(int a)
{
for (short i = 0; i < a; i++) // BUG: infinite loop
{
// ...
}
}
För att åtgärda felet ändrar vi typen för variabeln i så att den matchar bredden på en:
void NotInfiniteLoop(int a)
{
for (int i = 0; i < a; i++)
{
// ...
}
}
Ytterligare information
Den här frågan finns på Microsoft GitHub CodeQL-lagringsplatsen. Mer information om hur Windows Driver-utvecklare kan ladda ner och köra CodeQL finns på sidan CodeQL och testsidan för logotyper av statiska verktyg.