Off by one

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

Off by one to błąd programistyczny polegający na pomyłce o jeden, np. zaczynanie od 1 kiedy powinno się od 0 (lub odwrotnie) bądź mylenie "mniejsze" z "mniejsze-równe" w warunkach pętli.

Przykład typowego błędu off by one (pętla wykona się 101 razy, nie 100):

int foo[100];
int i;

for (i=0; i<=100; ++i)
  foo[i] = 0;

Uwaga: W przypadku, gdy kompilator ułoży adresy zmiennych na stosie tak, że:

&i == &foo[100];

- program się zapętli. Błąd ten, często wykorzystywany jest przez hakerów, na przykład do zmiany rejestru ESP.