c++ - 当传递给对象时,SDL_Surface 会在内存中存储图像的新实例,还是指向传递给它的图像?

标签 c++ object pointers sdl

Enemy类继承自Object类,使用Object类的构造函数加载图片...

Object::Object(SDL_Surface *imageFile,int x, int y, int w, int h)
{
    image = imageFile; 
}

因为我希望关卡类处理加载和删除图像,所以我将 Object 和 Enemy 类的析构函数留空...

关卡类为敌人图像初始化SDL_Surface并将图像加载到其中...

class Level : public StateManager
{
  private:
  SDL_Surface *enemyImage;
}    
Level::Level(int levelNo)
{
    enemyImage = loadImage("image/enemy.png");
}

然后,在关卡更新函数中,当敌人图像被推到敌人 vector 上时,敌人图像被传递给 Enemy 对象...

enemy.push_back(Enemy(enemyImage, 640, 200, 32, 32));

所以,我的问题是,当从 Level 对象加载的图像传递给 Enemy 对象时,它是在内存中创建它的新实例,还是指向关卡中加载的图像?

最佳答案

您所做的只是将指针复制到 SDL_Surface 对象;对象本身以及图像数据不会被复制。您应该小心管理共享资源。特别是,您应该确保您只为加载的每个 SDL_Surface 调用一次 SDL_FreeSurface()

关于c++ - 当传递给对象时,SDL_Surface 会在内存中存储图像的新实例,还是指向传递给它的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8950599/

相关文章:

c++ - 带指针的顶级 const

python - 将 Python str 传递给 C 函数

c++ - ncurses:用 C++ 处理终端中的键盘输入

Javascript 属性是一个对象,与对象不同

c++ - Windows 是否支持从内存运行程序?

c# - 在C# 4.0 中序列化对象,有没有更简单的方法?

java - 对象问题。使用构造函数还是不使用构造函数?

c++ - 指向引用的指针是否指向引用的地址或值?

c++ - AVL Tree 编译运行但瞬间崩溃

c++在一个函数参数中使用按位或 "|"的多个枚举