2

誰かがプログラムの決定論的なバグの例を教えてもらえますか?

ありがとう。

4

2 に答える 2

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

ヌル ポインターへのアクセス。常に起こります。

于 2011-01-21T05:41:34.013 に答える
1

ここに決定論的なバグがあります:

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

文字列の最後の文字をコピーするのを忘れているのは明らかです。つまり、コピーは 1 文字少なくなります。

割り当てステートメントを使用する場合は、次を使用できます。

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

-22017一貫して出力します。

または、SOに関する最近の質問からの小さなスニペットでも:

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

ユーザーエラーではありますが、これはバグです。

あるいは:

int *x = malloc (4);

移植可能であるはずのアプリケーションで。

于 2011-01-21T05:56:26.720 に答える