解释我的问题:
我有一个简单的向量数组,标题为敌人,其中包含Enemies的对象。在我在游戏中的关卡的关卡选择菜单中,当玩家点击一个关卡时,我会将给定关卡的所有敌人推回向量数组中。
目前我只有 3 个关卡完全完成了他们所有的敌人,今天在尝试做第四关时,现在我不断收到堆栈溢出。而且我不确定为什么会发生这种情况,我的意思是肯定只有当我首先到达级别选择菜单然后按键盘上的任何内容时才为数组分配任何内容,但没有立即崩溃。
所以就伪代码而言,这就是我所做的:
switch(keyboardInput)
//ALL keyboard button specific input
default:
if (levelSelected == 1)
//push back level 1 enemies into vector
elseif (levelSelected == 2)
//push back level 2 enemies into vector etc. etc.
就被推入向量数组的数字而言:
等级 1 = 26 个敌人
等级 2 = 113 个敌人
等级 3 = 204 个敌人
4级= 38个敌人(创建这个级别甚至还没有完成一半)
总计 = 381 个敌人。
注释掉我刚刚为第 4 级添加的一些矢量推回,然后游戏运行良好。但显然这是一个我需要克服的问题,才能让敌人分配到关卡。
它在文件“ chkstk.asm上崩溃以供参考。所以我对此有点困惑,为什么会发生这种情况是我的主要问题?希望我应该如何克服这个问题?
非常感谢任何帮助!
编辑:所以为了回答一些问题,我没有在我的代码中使用任何类型的递归,为了更好地了解错误,这里有一个截图
我总共加载了 86 张图片和 3 种字体。但即使评论其中一些,我仍然会收到上面相同的错误消息。唯一值得一提的就是 Enemies 类本身。但具体来说,只有一些变量和一些动画。每个敌人总共有 4 个动画可用,有些有动画,有些没有。我将在下面发布动画类; http://pastebin.com/X3GUgJiJ - 标题
http://pastebin.com/pL1iEkiy - .cpp 内容。
即使那样,尽管我不确定那里是否有任何显着的内存占用。
编辑二: 所以这里有一个指向我的关卡选择代码的链接,它非常大。大多数代码本身都与关卡选择屏幕相关,并且也渲染了正确的图像。 http://txtup.co/YLVRo
编辑三: 注释掉所有被推回向量数组的敌人会导致令人惊讶的结果,关卡加载代码会引发错误,这可能只是导致其他任何东西弄乱了堆栈还是实际上是加载代码那是在弄乱堆栈吗?我不确定。但这是级别错误的图像:http: //imgur.com/2fySY
编辑四: 因此,经过长时间的代码查看任务,看看可能导致问题的原因,我认为我可能有一个理论;所以每个 Enemy 对象都有可能拥有/使用 4 种不同的动画。5 真的,但它的故事很长,对于不同大小的敌人,基本上有 2 个不同版本的动画。因此,如果我们将其放入一些图形中,这些动画就是它们自己的名为 Animation 的类。是不是对于推回数组中的每个敌人对象都将包含它自己的所有可用特定动画的实例,因此随着时间的推移,我添加了越来越多的敌人,我不知道的问题已经增长越来越差。
我的意思是总共有1524个动画实例,目前我几乎将大部分代码都注释掉了。我认为可能是导致问题的大多数大事,慢慢地我正在取消对尝试事物的评论,确保这实际上是正确的。现在问题仍然存在,应该怎么做?