Segmentation fault(core dumped) in C
Есть две струкртуры A и B. В структуре B экземпляр структуры A и указатель на неё. Пытаюсь присвоить значение полю 'a' в структуре A двум способами. C первым все ок, а вот второй почему то ошибку выдает. Не понимаю, что не так.
struct A{int a; double x;};
struct B{A a; A *pa;}x[2];
x[0].a.a = 15;
x[1].pa->a = 14;
cout << x[0].a.a;
cout << x[1].pa->a;
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Ну смотрите...
struct A{int a; double x;};
struct B{A a; A *pa;}x[2];
Что в этот момент в x[1].pa
? неизвестно. Какой-то мусор. Т.е. pa
указывает на какое-то место в памяти, куда, скорее всего, никакого доступа нет. А вы туда запихиваете значение:
x[1].pa->a = 14;
Туда, куда нельзя - потому что неизвестно куда. Т.е. UB. Вот и все...
Я еще понимаю
x[1].pa = new A;
x[1].pa->a = 14;
Тогда вы выделили память, куда можно писать... Правда, надо потом не забыть ее освободить :)