gpt4 book ai didi

C++ 结构指针和内存泄漏

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:21:48 26 4
gpt4 key购买 nike

我正在做一个 C++ 书籍问题,但卡在了它说的这个特定部分

"编写程序询问有多少分数和有多少学生。然后它应该动态分配一个结构数组,每个结构的测试成员应该指向一个动态分配的数组,该数组将保存测试分数,在数组之后已经动态分配程序应该要求每个学生的身份证号码和考试成绩”。

现在我在 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后程序崩溃

最佳答案

这是我怀疑正在发生的事情:

在这个for 循环中:

  for(int i=0;i<testScore;i++)
{
cin>>object[i].Tests[i];
}

您使用 testScore 作为索引访问 object。如果 testScore 大于 object 的长度,您将遇到问题。

内存泄漏问题是因为您正在为 objectCourse 的每个 Tests 成员分配空间,但您从未释放那个内存。

关于C++ 结构指针和内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25086138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com