【发布时间】:2009-11-13 14:53:36
【问题描述】:
我在 SDL 中为自己设置了一个小型射击游戏作为教程。我有一个弹丸结构
struct projectile
{
SDL_Surface* surface;
int x;
int y;
};
然后我把它放入一个向量中。
vector<projectile> shot;
projectile one_shot;
当我按下空格键时,我会创建一个新的射弹并将其添加到向量中,然后在渲染时它们会被 blitted。
这工作正常,但我在看似随机的情况下收到“程序已停止工作”错误。
所以我想知道释放表面的正确方法是什么。
- 之后我会释放它们吗?
- 我是否会在每个单独的镜头退出屏幕时释放它?
- 或者其他选择?
更新:
我发现当我退出时它崩溃的地方,当我开了几枪并且它们都退出了屏幕时。我尝试用“正确的复制方式”替换为seen in this example 将曲面添加到向量的代码,它的行为仍然相同。
这就是我释放表面的方式。
if(shot.at(i).y < 0 - shot.at(i).surface->h)
{
SDL_FreeSurface(shot.at(i).surface);
shot.erase(shot.begin() + i);
}
任何人都有一个想法或一些示例代码,我可以看看这个来解决这个问题。
【问题讨论】: