有人能给我一个程序中确定性错误的例子吗?
感谢。
答案 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);
在一个应该是可移植的应用程序中。