У меня есть программа для шифрования игрушек, которая сталкивается с ошибкой шины при предоставлении очень длинного ключа (я использую 961168601842738797, чтобы воспроизвести его), что меня озадачивает. Когда я прокомментировал разделы, чтобы изолировать ошибку, я обнаружил, что это вызвано этой невинно выглядящей петлей в моем Сите Эратосфена.Ошибка шины в C для Loop
unsigned long i;
int candidatePrimes[CANDIDATE_PRIMES];
// CANDIDATE_PRIMES is a macro which sets the length of the array to
// two less than the upper bound of the sieve. (2 being the first prime
// and the lower bound.)
for (i=0;i<CANDIDATE_PRIMES;i++)
{
printf("i: %d\n", i); // does not print; bus error occurs first
//candidatePrimes[i] = PRIME;
}
Временами это была ошибка сегментации, а не ошибка шины.
Может ли кто-нибудь помочь мне понять, что происходит, и как я могу это исправить или избежать этого в будущем?
Заранее благодарен!
PS
Полный код доступен здесь:
Что такое 'CANDIDATE_PRIMES'? Большинство людей не уходят с сайта, чтобы посмотреть на ваш код. – John3136
Его просто длина массива, моя ошибка. – Etsi
Да, какая это ценность? 2, 20, 200, 2436492364934623905473843674383? – John3136