我今天的问题是动态数组。每次输入2个以上的测试分数后,我输入第3个最大测试分数时会出现错误,该分数表示“ * ./a.out'中的错误:双重免费或损坏(输出):0x09c2e028 * 中止(核心倾销)“我是否对阵列做错了什么?还是有些东西让我痛苦地失踪?
该程序应该采用无限数量的测试分数及其各自的最大可能分数(即测试分数= 76最大测试分数可能= 100)并将这些数字转换为GPA。我只包括我用来创建GPA的类,因为剩下的代码还没有完成,因为我无法通过这部分。
我必须使用动态数组,因为它适用于学校作业。
感谢阅读,希望有人能帮助我!
inline-block
答案 0 :(得分:6)
您的所有分配均为new ...[]
,因此所有删除操作都必须为delete [] ...
。
delete [] testScore;
delete [] maxScore;
delete [] gpa;
此外,您的代码仅为testscore和maxscore分配一个元素,但是在用户输入-1之前,您将继续将元素写入数组。这意味着你很可能会在缓冲区的末尾写字。
你应该摆脱原始指针并使用像std::vector
这样的STL容器。有了这些,您可以轻松地添加元素,而无需重新分配自己。