【发布时间】:2014-09-25 00:08:32
【问题描述】:
我正在做一个 c++ 书籍问题,并被困在它所说的特定部分
“编写程序,询问有多少分数和有多少学生。然后它应该动态分配一个结构数组,每个结构的Test成员应该指向一个动态分配的数组,该数组将保存测试分数,在数组之后已被动态分配,程序应询问每个学生的 ID 号和考试成绩”。
现在我在 for 循环中有一个问题,在输入值后存在内存泄漏和程序崩溃,有什么建议吗?
这里是代码:
struct Course
{
string Name;
int IdNumber;
int *Tests;
int Average;
int courseGrade;
};
void Result(int,int );
int main()
{
cout<<"please enter number of test score ";
int testScore;
cin>>testScore;
int numberofStudents;
cout<<"please enter number of student there is ";
cin>>numberofStudents;
Result(numberofStudents,testScore);
}
void Result(int numberofStudents,int testScore)
{
const int Size=numberofStudents;
const int Size1=testScore;
Course *object=nullptr;
object=new Course[numberofStudents];
object->Tests = new int[testScore];
for(int i=0;i<testScore;i++)
{
cin>>object[i].Tests[i];
}
}
这是控制台上的输入
please enter number of the test scores :3
please enter number of students there is :3
34
90
输入 90 后程序崩溃
【问题讨论】:
-
你的意见是什么?
-
你打电话给
new。你永远不会打电话给delete。 -
您只为
object数组的第一个元素分配Tests,使用此行:`object->Tests = new int[testScore];`。 -
请提供一些示例输入,以便我们更好地为您提供帮助。
-
除了内存泄漏之外(有几个),您需要为学生设置一个外循环,然后为每个学生的考试成绩设置一个内循环。您对学生和单个循环的分数使用相同的索引
i,这样做会执行一些“对角线”总体(第一个学生
标签: c++ arrays memory-leaks