2011-01-21 49 views
2

有人能給我一個程序中確定性錯誤的例子嗎?確定性錯誤的例子

感謝。

+0

確定性的錯誤很容易 - 它們總是發生!這是非確定性的,很難(競爭條件等)。 – Gabe 2011-01-21 05:43:10

回答

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

訪問空指針。總是發生。

+0

但請注意,訪問空指針的結果可能會有所不同,具體取決於程序在哪個系統上運行... – 2011-01-21 05:45:48

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

或從最近的問題上所以即使是小片段:

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

這是一個錯誤,儘管用戶錯誤之一。

甚至:

int *x = malloc (4); 
在應該是便攜式應用