@DeboshiR
Свободу разработчикам!!!

Как исправить вылет программы при добавлении новой записи?

class student {
public: 
    string fam;
};
 
int main() {
int N = 0,
    u = 0;
float k = 0;
string foundfam, 
    foundgroup;
bool founded = false;
student *stud = new student[N + 1];
student *timeStud;
while (u != 4) {
    cin >> u;
    switch (u)
    {
        case 1:         
            timeStud = new student[N + 1];
            cout << N + 1 << "-й студент ";
            cout << "\n Фамилия: ";
            cin >> stud[N].fam;
            N++;
            timeStud = stud;
            stud = new student[N];
            stud = timeStud;
            break;
        case 2:
        case 3:
            break;
        default:
            break;
    }
}
return 0;
}

Первую запись добавляет нормально, но при добавлении второй вылетает на строке cin >> stud[N].fam; без отображения ошибок.
Как это можно исправить?
З.Ы.: если использовать фиксированный размер stud, то всё работает нормально.
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
Как поправить - переписать заново всю работу с памятью.
Например, вот тут первая строка бессмысленна:
stud = new student[N];
            stud = timeStud;


Да и вообще - непонятно чего вы пытаетесь добиться всеми этими гоняними адресов и аллокациями.
Если вам нужен динамический размер - используйте vector.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы