Quelqu'un peut-il me donner un exemple de bogue déterministe dans un programme?Exemple de bogue déterministe
Merci.
Quelqu'un peut-il me donner un exemple de bogue déterministe dans un programme?Exemple de bogue déterministe
Merci.
void bug()
{
int *ptr = 0;
ptr[0] = 10;
}
Accès à un pointeur nul. Arrive toujours.
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 ... –
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
Je cherche un exemple d'utilisation de la variable d'affectation. – Lok
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.
Les bugs déterministes sont faciles - ils arrivent toujours! Ce sont les non-déterministes qui sont durs (conditions de course, etc.). – Gabe