błąd wykonania (SIGABRT)

0
#include<cstdio>

int main()
    {
    unsigned long int a, b, *c, z;
    while(scanf("%lu%lu", &a, &b)){
        z = 0;
        c = new unsigned long int[b];
        while(b--)
        {
               scanf("%lu", &c[b]);
               if(c[b] == a) z++;
        }
    printf("%lu\n", z);
    }
    return 0;
}

Dleczego kompilator wywala mi błąd wykonania (SIGABRT) ?

0

Dodam, że przy takim kodzie program wykonuje się bez problemu...

#include<iostream>
using namespace std;
int main(){
    unsigned long int a, b, *c, z;
    while(cin>>a>>b){
    z = 0;
    c = new unsigned long int[b];
    while(b--){
               cin>>c[b];
               if(c[b] == a) z++;
    }
    cout<<z<<endl;
    }
    return 0;
}

O co chodzi? Dlaczego pierwszy kod po skompilowaniu wywala błąd?

0
gubbi napisał(a)

Dleczego kompilator wywala mi błąd wykonania (SIGABRT) ?

Dla jakich danych wejściowych? Zapuszczałeś debugger? W której linii masz ABRT?

BTW, masz memleaka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1