2011-01-21 3 views
2

Quelqu'un peut-il me donner un exemple de bogue déterministe dans un programme?Exemple de bogue déterministe

Merci.

+0

Les bugs déterministes sont faciles - ils arrivent toujours! Ce sont les non-déterministes qui sont durs (conditions de course, etc.). – Gabe

Répondre

2
void bug() 
{ 
    int *ptr = 0; 
    ptr[0] = 10; 
} 

Accès à un pointeur nul. Arrive toujours.

+0

Notez cependant que le résultat de l'accès à un pointeur nul peut varier en fonction du système sur lequel le programme s'exécute ... –

+0

Cela n'est pas déterministe car le comportement n'est pas défini. Cela signifie qu'il peut ne rien faire d'un seul coup tout en réduisant l'univers à une singularité le suivant. – paxdiablo

+0

Je cherche un exemple d'utilisation de la variable d'affectation. – Lok

1

est ici un bug déterministe:

void myStrCpy (char *s, char *d) { 
    for (int i = 0; i < strlen (s) - 1; i++) 
     *d++ = s[i]; 
    *d = '\0'; 
} 

Il oublie bien évidemment de copier le caractère final de la chaîne qui signifie que la copie est un caractère moins.

Pour un avec une instruction d'affectation, vous pouvez utiliser:

#include <stdio.h> 
int main (void) { 
    short x = 2094967295; 
    printf ("%d\n", x); 
    return 0; 
} 

qui délivre en sortie -22017 cohérente.

Ou même un petit extrait d'une question récente sur le SO:

int x = 2^5; // set x to 32 for bitmasking later. 

C'est un bug, mais une erreur de l'utilisateur un.

Ou encore:

int *x = malloc (4); 

dans une application qui est censé être portable.