双重释放或动态数组损坏

时间:2017-01-30 09:13:45

标签: c++ c++11

我今天的问题是动态数组。每次输入2个以上的测试分数后,我输入第3个最大测试分数时会出现错误,该分数表示“ * ./a.out'中的错误:双重免费或损坏(输出):0x09c2e028 * 中止(核心倾销)“我是否对阵列做错了什么?还是有些东西让我痛苦地失踪?

该程序应该采用无限数量的测试分数及其各自的最大可能分数(即测试分数= 76最大测试分数可能= 100)并将这些数字转换为GPA。我只包括我用来创建GPA的类,因为剩下的代码还没有完成,因为我无法通过这部分。

我必须使用动态数组,因为它适用于学校作业。

感谢阅读,希望有人能帮助我!

inline-block

1 个答案:

答案 0 :(得分:6)

您的所有分配均为new ...[],因此所有删除操作都必须为delete [] ...

delete [] testScore;
delete [] maxScore;
delete [] gpa;

此外,您的代码仅为testscore和maxscore分配一个元素,但是在用户输入-1之前,您将继续将元素写入数组。这意味着你很可能会在缓冲区的末尾写字。

你应该摆脱原始指针并使用像std::vector这样的STL容器。有了这些,您可以轻松地添加元素,而无需重新分配自己。