C++ Visual Studio 2012错误0xC0000005阵列输出

C++ Visual Studio 2012错误0xC0000005阵列输出,c++,arrays,visual-studio-2012,memory,C++,Arrays,Visual Studio 2012,Memory,我会尽量让这篇文章简洁明了。 我有一个相当大的基于文本的RPG作为我班的一个项目。当我尝试生成可用武器列表时,我得到错误: game.exe中0x613240F6(msvcp110.dll)处未处理的异常:0xC0000005:访问冲突读取位置0xFFD9EC31 我发现了很多关于这个错误的信息,但是找不到相关的帖子来帮助我解决问题。我发现的一切都与指针有关,我没有使用指针(我应该使用指针,我只是不太理解指针,我写的大部分内容都是在2小时睡眠和3杯浓咖啡的情况下完成的…) 代码有点笨重和冗长,所

我会尽量让这篇文章简洁明了。 我有一个相当大的基于文本的RPG作为我班的一个项目。当我尝试生成可用武器列表时,我得到错误:

game.exe中0x613240F6(msvcp110.dll)处未处理的异常:0xC0000005:访问冲突读取位置0xFFD9EC31

我发现了很多关于这个错误的信息,但是找不到相关的帖子来帮助我解决问题。我发现的一切都与指针有关,我没有使用指针(我应该使用指针,我只是不太理解指针,我写的大部分内容都是在2小时睡眠和3杯浓咖啡的情况下完成的…)

代码有点笨重和冗长,所以我发布了3个相关的东西,我在其中得到错误的函数,生成武器的函数,以及武器类

代码可以找到


非常感谢你们能提供的任何帮助

我检查了您的代码,发现您为
shopSelection
数组编制索引的方式存在问题。您正在索引不存在的第7个元素,这解释了报告的访问冲突错误。由于数组的大小为6,因此最大索引为5

你的第一个问题是用C++编写基于文本的RPG。首先,这绝对是不相关的,其次是我说的,这是一个类,我被告知要用面向对象的原则在C++中编写一个基于文本的游戏。所以我有点受限。这不是你的问题的原因,但是
weaponGen
功能有大量冗余代码。您只需要一个
武器
局部变量,整个函数可以减少到3行。而且,
randStats
应该通过引用对其参数进行操作,而不是通过值返回。就像我说的,在没有睡眠的情况下跑步,我写了这个。我重新检查并很好地清理了武器功能。然而,我有点困惑,你对我的randStats函数的意思是什么。我们能在这里得到代码吗?pastebin链接已断开。不要用pastebin来编写SO中的代码。这正是问题所在,我真希望我能因为一开始就问了这个问题而打自己一巴掌。我已经编码了好几年(虽然C++是一种新的,非常难理解的语言),我很清楚数组的索引从零开始,总是以最大的大小结束,1。正如我所说,在2小时的睡眠和3杯浓咖啡的基础上,我完成了约600行代码,但从未意识到我的数组有多邋遢。非常感谢much@MichaelWard-永远记住,一双新鲜的眼睛会看得更清楚。