有人可以给我一个程序中确定性错误的例子吗?
谢谢。
void bug()
{
int *ptr = 0;
ptr[0] = 10;
}
访问空指针。总是发生。
这是一个确定性错误:
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);
在应该是可移植的应用程序中。