Следующая программа, по-видимому, вызывает ошибку сегментации в переменной цикла.Переменная цикла доступа к разрыву сегментации
Может ли кто-нибудь помочь мне понять, что происходит, пожалуйста!
std::vector<int> Euler::Utils::sieve(int n) {
std::vector<bool> A(n, true);
using size_t = std::vector<bool>::size_type ;
size_t size = static_cast<size_t>(std::sqrt(n));
std::vector<int> result;
for (size_t i = 2; i < size; i++) {
if (A[i]) {
size_t i2 = static_cast<size_t>(std::pow(i, 2));
for (int j = 0; j < n; j++) {
A[i2 + j* i] = false;
}
}
}
for (size_t i = 2; i < A.size(); i++) {
if (A[i]) {
//Seg fault here.
std::cout << i << std::endl;
result.push_back(i);
}
}
return result;
}
Edit: ошибка вокруг конца на result.push_back (I);
Дайте нам достаточно кода, чтобы воспроизвести проблему, пожалуйста. –
Может ли 'A [i2 + j * i]' выйти за пределы диапазона? – Dani
@ Дани это не. Ошибка, похоже, происходит в result.push_back (i) – JoyGreen