Может ли кто-нибудь дать мне пример детерминированной ошибки в программе?Пример детерминированной ошибки
Спасибо.
Может ли кто-нибудь дать мне пример детерминированной ошибки в программе?Пример детерминированной ошибки
Спасибо.
void bug()
{
int *ptr = 0;
ptr[0] = 10;
}
Доступ к нулевой указателю. Всегда бывает.
Обратите внимание, однако, что результат доступа к нулевому указателю может меняться в зависимости от того, в какой системе работает программа ... –
Это не детерминировано, так как поведение не определено. Это означает, что он может ничего не делать на одном прогоне, одновременно сворачивая вселенную на сингулярность на следующем. – paxdiablo
Я ищу пример использования переменной назначения. – Lok
Вот детерминированная ошибка:
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);
в приложении, которое, как предполагается, будет переносимым.
Детерминированные ошибки легко - они всегда случаются! Это недетерминированные, которые тяжелы (условия гонки и т. Д.). – Gabe