2011-01-21 3 views
2

누군가 프로그램에서 결정적 버그를 보여줄 수 있습니까?결정적 버그 예

감사합니다.

+0

확정적 인 버그는 쉽습니다. 항상 발생합니다! 그것은 하드 (경쟁 조건 등)가 아닌 결정적이지 않은 것들입니다. – Gabe

답변

2
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'; 
} 

는 하나 개의 문자 작 :

+0

그러나 null 포인터에 액세스 한 결과는 프로그램이 실행되는 시스템에 따라 달라질 수 있습니다 ... –

+0

동작이 정의되지 않았으므로 이는 결정적이지 않습니다. 즉, 우주를 다음 우주의 특이점으로 무너 뜨리는 동안 그것은 한 번의 달리기에서 절대적으로 아무것도 할 수 없다는 것을 의미합니다. – paxdiablo

+0

저는 할당 변수 사용 예제를 찾고 있습니다. – Lok

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

.