@gasonger0

Почему в С++ появляется Segmentation fault?

Имею код следующего вида:

#include <iostream>

struct Tree{
    unsigned short number{};
    unsigned short sizeOfChild{};
    Tree** child;

    Tree(unsigned short val){
        number = value;
        child = nullptr;
        sizeOfChild = NULL;
    }
};

class MyTree{
private:
    Tree* head{0};
public:
    MyTree(){
        try{
            std::cin >> head->sizeOfChild;
        }catch(....
        ....
    }
};


На строчке "std::cin >> head-sizeOfchild" получаю ошибку Segmentation Fault. В интернете увидел, что это связано с использованием памяти, которая, по сути, не должна изменяться пользователем, но конкретную причину ошибки в коде так и не уставновил. В чём может заключаться ошибка?
  • Вопрос задан
  • 78 просмотров
Пригласить эксперта
Ответы на вопрос 2
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
head - указатель, который вы инициализируете 0. Потом вы пытаетесь обратиться к полю sizeOfChild по этому указателю, вот тут все и падает. Потому что поля нет, как нет и всего head - вы же под него память не выделяли.
Ответ написан
Комментировать
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
конкретную причину ошибки в коде так и не уставновил

Да вот же она: Tree* head{0}; -- в head у тебя NULL.
А std::cin >> head->sizeOfChild пытается читать в поле объекта на который указывает head.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы