Пример детерминированной ошибки - PullRequest
2 голосов
/ 21 января 2011

Может кто-нибудь привести пример детерминированной ошибки в программе?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 21 января 2011
void bug()
{
  int *ptr = 0;
  ptr[0] = 10;
}

Доступ к нулевому указателю. Всегда бывает.

1 голос
/ 21 января 2011

Вот детерминированная ошибка:

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

в приложении, которое должно быть переносимым.

...