嗨,我为比赛开发游戏已经有几个星期了。(我对编码有点熟悉,但不是很多)。
我正在用 Visual C++ 编写游戏。当我在 Visual c++ 上以发布模式运行它时,它运行正常,但是当我从 .exe 尝试时,会弹出一个窗口并说“ * *.exe 已停止工作”。我知道错误是什么,但我不知道如何解决它。弹出错误是因为有很多向量,如果我从游戏运行的程序中删除一些调整大小的向量,它可以是任何东西,一堵墙,一个盒子向量,没关系。但是我觉得这很奇怪,因为当我在任务管理器中查看时,游戏只占用了 20,000K 内存。
所以总而言之,如果我从游戏中删除一些向量,游戏 exe 就会运行,如果没有,它只会在 Visual C++ 中运行。我该怎么办?我真的迷路了。
///////////////////////////////////////// ////////////////////////////
好的,如果我只调整四个向量列表的大小,.exe 会运行,但如果我调整大小超过 4 个,exe 会出错,但可视化 c++ 实例仍然运行。
class Level
{
public:
int LevelWidth;
MapElements::Background Background;
//OBJETS SUR MAP
Array<MapElements::Ground> Grounds;
Array<MapElements::Wall> Walls;
Array<MapElements::Platform> Platforms;
Array<MapElements::Box> Boxs;
//ENNEMIS et JOUEUR
Array<Gameplay::Droite> Droites;
Array<Gameplay::Cercle> Cercles;
Gameplay::Player Player;
};
这有效:
void Level::InitializeMap(int MaxGround, int MaxWall, int MaxPlatforms, int MaxBox)
{
Grounds.Element.resize(MaxGround);
Walls.Element.resize(MaxWall);
Platforms.Element.resize(MaxPlatforms);
Boxs.Element.resize(MaxBox);
}
这不会:
void Level::InitializeMap(int MaxGround, int MaxWall, int MaxPlatforms, int MaxBox, int MaxCercles)
{
Grounds.Element.resize(MaxGround);
Walls.Element.resize(MaxWall);
Platforms.Element.resize(MaxPlatforms);
Boxs.Element.resize(MaxBox);
Cercles.Element.resize(MaxCercles);
}
数组类:
template <typename T> class Array
{
public:
std::vector<T> Element;
Array();
};
template <typename T> Array<T>::Array()
{
}
如果我只有 4 个 vector.resize(),则调整大小有效,它可以是任何变量(墙、框等),错误的根源是什么?