• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Segmentation fault - C++

0 głosów
811 wizyt
pytanie zadane 12 marca 2020 w C i C++ przez kvlike Nowicjusz (170 p.)
edycja 12 marca 2020 przez kvlike

Mam problem. Polega on na tym, że kiedy watrość zmiennej b jest zbyt duża, wyskakuje błąd exited, segmentation fault. Co ciekawe, błąd nie pojawia się przy liczbach mniejszych niż 259560 (debug) / 259564 (release). Watro dodać, że zmienna a jest zawsze mniejsza od b. Oto mój kod:

#include <iostream>
#include <algorithm>

using namespace std;

int oblicz_sume(int liczba)
    {
        int wynik=0;
        do
        {
            wynik=wynik+liczba%10;
            liczba=liczba/10;
        }while(liczba!=0);
    return wynik;
}
int main()
{
    int a, b;
    cin >> a >> b;
    int roz = b-a+1;
    int numer[roz];
    for(int i = a; i <= b; i++){
        numer[i-a] = i;
    }
    int suma[roz];
    string ctrl;
    for(int i = 0; i < roz; i++){
        suma [i] = oblicz_sume(numer[i]);
    }
    sort(suma, suma + roz);
    cout << suma[roz-1];
    return 0;
}

Proszę o szybką pomoc.

1 odpowiedź

+2 głosów
odpowiedź 12 marca 2020 przez RafalS VIP (122,780 p.)
    cin >> a >> b;
    int roz = b-a+1;
    int numer[roz];

Undefined behaviour. Temat przewija się na forum wielokrotnie. Użyj vectora lub tablicy alokowanej dynamicznie:

    cin >> a >> b;
    int roz = b-a+1;
    int *numer = new int[roz];

 

Podobne pytania

0 głosów
1 odpowiedź 936 wizyt
pytanie zadane 16 grudnia 2019 w C i C++ przez kvlike Nowicjusz (170 p.)
+1 głos
1 odpowiedź 410 wizyt
pytanie zadane 17 lutego 2022 w C i C++ przez Yaqbek Nowicjusz (160 p.)
0 głosów
1 odpowiedź 350 wizyt
pytanie zadane 18 listopada 2018 w C i C++ przez Ptaszor3 Użytkownik (900 p.)

93,741 zapytań

142,677 odpowiedzi

323,294 komentarzy

63,323 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...