Av-en- feil
I databehandling er en feil av typen off-by-one ( OBOE , "unit shift error") en logisk feil (in) som antyder den diskrete ekvivalenten til et problem på grensene . Hun vises regelmessig i programmering når loop s ' itererer for mye eller for lite. Så feilen kan oppstå når en programmerer gjør feil som å bruke kommandoen "mindre enn eller lik" på et sted der han burde ha brukt "mindre enn" i stedet. Feilen kan også oppstå når han glemmer at en serie starter på null i stedet for 1.
IT-sikkerhet
En typisk off-by-one feil i datasikkerhet er forårsaket av feil administrasjon av rutinen strncat . En utbredt misforståelse av strncater at garantert nulloppsigelse ikke vil skrives utover maksimal lengde. Faktisk vil kommandoen skrive et nulltegn en byte utover den angitte maksimale lengden.
Eksempel på en off-by-one feil med strncat
void foo (char *s)
{
char buf[15];
memset(buf, 0, sizeof(buf));
strncat(buf, s, sizeof(buf)); // Le paramètre final devrait être : sizeof(buf)-1
return;
}
Matematikkeksempel
Formelen til den geometriske serien er skrevet
∑ikke=0+∞qikke=11-q.{\ displaystyle \ sum _ {n = 0} ^ {+ \ infty} q ^ {n} = {\ frac {1} {1-q}}.}
En "off-by-one" feil ville være å skrive
12+14+...=11-12=2.{\ displaystyle {\ frac {1} {2}} + {\ frac {1} {4}} + \ ldots = {\ frac {1} {1 - {\ frac {1} {2}}}} = 2.}
fordi denne siste serien begynner med begrepet .
ikke=1{\ displaystyle n = 1}
Merknader og referanser
(fr) Denne artikkelen er helt eller delvis hentet fra Wikipedia-artikkelen på
engelsk med tittelen
" Off-by-one error " ( se listen over forfattere ) .
-
(in) Edsger Wybe Dijkstra , " Why shoulds start nummering at zero (EWD 831) " , EW Dijkstra Archive, University of Texas i Austin ,2. mai 2008
Se også
Relaterte artikler
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">