C++ 我的析构函数被称为everytick

C++ 我的析构函数被称为everytick,c++,sdl,destructor,C++,Sdl,Destructor,虚惊一场!(阅读编辑) 我想用SDL做一个小游戏。创建实体时,其图像应增加refcount,这没有问题。当需要使用“SDL_FreeSurface(image)”(减少它)时,问题就来了。这应该发生在实体本身中,所以我尝试创建自己的析构函数,作为测试,看看它是否被调用。我添加了一个cout,但它之所以被调用是出于某种原因?它没有删除任何内容,所以我想当我让它工作时,我还必须处理所有的实体值(我只需要处理特殊情况,比如这个) 实体::~Entity() { cout您的析构函数将在每次类实体的对象

虚惊一场!(阅读编辑)

我想用SDL做一个小游戏。创建实体时,其图像应增加refcount,这没有问题。当需要使用“SDL_FreeSurface(image)”(减少它)时,问题就来了。这应该发生在实体本身中,所以我尝试创建自己的析构函数,作为测试,看看它是否被调用。我添加了一个cout,但它之所以被调用是出于某种原因?它没有删除任何内容,所以我想当我让它工作时,我还必须处理所有的实体值(我只需要处理特殊情况,比如这个)

实体::~Entity()
{

cout您的析构函数将在每次类实体的对象被销毁时被调用,并且只有在那个时候才会被调用


如果在每次勾选时调用析构函数,则意味着在每次勾选时都会销毁一个对象。很可能在每次勾选时都创建一个临时实体对象,并且它会立即销毁(例如,您可能会按值传递一个实体对象)


如果在每次勾选时调用析构函数,则意味着在每次勾选时都会销毁一个对象。很可能在每次勾选时都创建一个临时实体对象,并且它会立即销毁(例如,您可能会按值传递一个实体对象).

析构函数不应该在每个勾号都调用,这很奇怪。你能添加一些你正在使用的更新代码吗?没有代码,没有人会知道如何在每个勾号都调用析构函数。不,析构函数在对象删除时调用。我们需要使用
实体
对象的代码。你可能正在传递它ere作为创建对象副本的值而不是引用,并且副本被销毁。销毁程序只调用一次:当对象被销毁时。这会导致您每次都创建和销毁实体对象的结论。您可能只是没有注意到。当您将实体对象传递给其他函数时,通常正在制作一个副本,该副本将在函数结束后销毁。但要确切了解发生了什么,我们需要查看更多的代码。析构函数不应该在每个勾号上都调用,这很奇怪。你能添加一些正在使用的更新代码吗?没有人会知道如何在没有代码的情况下在每个勾号上调用析构函数e、 不,在删除对象时调用析构函数。我们需要使用
实体
对象的代码。您可能将其作为创建对象副本的引用传递到某个位置,然后副本被析构函数。析构函数只调用一次:当某个对象被销毁时。这会导致您创建并删除该对象的结论stroy实体对象。你可能只是没有注意到。当你将实体对象传递给另一个函数时,通常会生成一个副本,该副本在函数结束后将被销毁。但要确切地了解发生了什么,我们需要查看更多的代码。这正是我正在做的,我在发布后不久就意识到了这一点ed,在编辑帖子的过程中,很多人都回答:)谢谢!这正是我正在做的,我意识到在我发布帖子后不久,在编辑帖子的过程中,很多人都回答:)谢谢!
Entity::~Entity()
{
    cout << "I'm deleted" << endl;
    //SDL_FreeSurface(image);
}