我的析构函数被称为每个tick

时间:2013-01-17 12:06:27

标签: c++ sdl destructor

误报! (阅读编辑)

我正在尝试使用SDL制作一款小游戏。创建实体时,其图像应该在refcount上,这没问题。问题来自于时间使用“SDL_FreeSurface(图像)”(确实减少它),这应该发生在实体本身内,所以我试图创建自己的析构函数,作为测试,看看它是否被调用了我添加了一个cout,但出于某种原因它被称为每个滴答?它没有删除任何东西所以我想我还必须在我开始工作时处理所有实体值(认为我只需要处理特殊情况,例如这个)。

Entity::~Entity()
{
    cout << "I'm deleted" << endl;
    //SDL_FreeSurface(image);
}

如果应该一直调用析构函数(?)为什么会这样?

EDIT 我刚刚意识到,在每个刻度线中我都使用了一些临时实体,可能是那些被解构的,抱歉随意锁定它。

1 个答案:

答案 0 :(得分:4)

每次实体类的对象被销毁时,都会调用析构函数。

如果在每个滴答处调用析构函数,则表示每个滴答都会破坏一个对象。你可能在每个tick都创建一个临时的Entity对象,它会立即被销毁(例如你可能按值传递一个Entity对象)。