Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ö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.