确定性错误的例子

时间:2011-01-21 05:39:00

标签: deterministic non-deterministic

有人能给我一个程序中确定性错误的例子吗?

感谢。

2 个答案:

答案 0 :(得分:2)

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

访问空指针。总是发生。

答案 1 :(得分:1)

这是一个确定性错误:

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

很明显忘记复制字符串的最后一个字符,这意味着副本少了一个字符。

对于带有赋值语句的人,您可以使用:

#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);

在一个应该是可移植的应用程序中。