Segment fault po zamianie float na double

0

Witam

banalny program ale czy ktoś może mi podpowiedzieć dlaczego program przerywa wykonywanie jeśli w linii 8 daję double a nie float?

#include <iostream>

using namespace std;

class student {
private:
    char * name;
    float marks1, marks2;  //tutaj chcę dać double
public:
    student() {
        cout<<"Podaj imie: ";
        cin>>name;
        cout<<"Podaj pierwszą ocenę: ";
        cin>>marks1;
        cout<<"Podaj drugą ocenę: ";
        cin>>marks2;
        cout<<"Poprawnie wprowadzono dane studenta."<<endl;
    }
    void disp(){
        cout<<"Twoje imię to: "<<name<<endl<<"Twoja średnia to: ";
        cout<<calc_media()<<endl;
    }
    double calc_media(){
        return (marks1+marks2)/2;
    }

};

int main()
{
    student obj1;
    obj1.disp();

}

Jak debuguję to po wprowadzeniu imienia dostaję:

The inferior stopped because it received a signal from the operating system.

Signal name :
SIGSEGV
Signal meaning :
Segmentation fault

Ale zupełnie nie rozumiem dlaczego tak się dzieje.

3

Zamień char* (w student::name) na std::string bądź zaalokuj jakąś pamięć temu wskaźnikowi, ponieważ to tutaj masz błąd (odwołanie do nieprzydzielonej pamięci).
To, że wywala się akurat po zamianie float -> double, jest zbiegiem okoliczności.

0

Dzięki
Typ narzucony ćwiczeniem.
Alokowanie pamięci pomogło. Ten temat jest dopiero przede mną.

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