我正在尝试在数组Subject中创建一个动态数组对象,它接收一个输入文件,并根据有多少主题,继续创建一个新大小的新数组。这是我一直在测试的。我得到的错误是分段错误。我不明白为什么。
输入文件是subjects.txt,其中包含学生和ID,如下所示:
英语123456
跳舞123457
int main (int argc, char** argv)
{
ifstream input;
input.open("subjects.txt");
string subject;
string id;
int index;
int size;
index = 0;
size = 1;
Subject *array;
Subject *temp;
array = new Subject[size];
while (fin >> subject) {
input >> id;
array[index].set_subject(subject);
array[index].set_id(id);
temp = new Subject[size];
for (int i = 0; i < size; i++) {
temp[i].set_subject(array[i].get_subject());
temp[i].set_id(array[i].get_id());
}
size++;
delete [] array;
array = temp;
index++;
}
return 0;
}
谢谢。
答案 0 :(得分:0)
数组array
从该循环中出现的大小与进入时的大小相同。然后,您尝试写入它的末尾,并获得分段错误。
改变这个:
temp = new Subject[size];
到此:
temp = new Subject[size+1];