这是一种可接受的资源管理方式吗?
Is this an acceptable way of managing resources?
为了管理我的游戏中的各种资源(字体位图等),我想创建将字符串映射到任何资源的管理器。当超出作用域时,该对象将释放资源所使用的所有内存。
基本上如果你想要一个字体,你要么添加它,要么请求一个字符串指示它的名字它会返回一个指向它的指针。这样,用户就不必管理任何内存。
对于一款小型电子游戏来说,这是一个好的设计吗?
谢谢
你所描述的是一个结合了智能指针/作用域指针的工厂模式。
这很合理。只需考虑是否真的需要使用字符串来标识资源。一个enum就足够了。
如果您的管理器返回普通指针,这里就会出现问题-资源将一直挂在那里,直到管理器本身被销毁(这是低效的,特别是对于像位图这样的资源),或者直到您显式调用管理器来摆脱它们,如果抛出异常,这可能不会发生。管理器最好返回某种类型的智能指针,以便在资源使用完毕时通知管理器。
这听起来有点像一个智能指针,如果它在超出作用域时自动释放它自己
您可能需要考虑boost::intrusive_ptr,以便对所有对象进行ref计数。然后,如果需要的话,您可以在管理器中手动处理它们。
当然,你可以自己编写智能指针类,或者你可以从已经有智能指针类的人那里获取:
http://www.boost.org/doc/libs/1_46_1/libs/smart_ptr/smart_ptr.htm
相关文章:
- 如何维护资源管理器项目视图中当前可见的项目列表
- 资源管理设计模式
- 编译器资源管理器和 GCC 具有不同的输出
- Windows 资源管理器中的图标在使用 resource.rc 时显示 2 个不同的图标
- 编译器资源管理器(godbolt)如何安全地运行代码?
- 从 GUI 文件资源管理器执行程序,并且不生成终端
- 强制资源管理器重新加载注册表值
- Visual Studio 测试资源管理器找不到我的提升测试
- 通过文件资源管理器获取文件夹目录
- Windows 资源管理器打开文件夹还原
- 如何使用C 浏览目录以创建文件资源管理器
- C++ Android 资源管理器从应用内部目录中读取文件
- 停止SetVolumeMountPoint打开文件资源管理器
- 重新启动资源管理器.exe使用 C++
- 关于多态性和资源管理的程序设计
- 资源管理器
- Visual Studio,在(解决方案资源管理器的)某个筛选器内的所有文件中查找/替换文本
- SHOpenFolder并选择资源管理器更换程序的项目
- 如何在 Windows 资源管理器中捕获用户的左键单击?
- 如何将设备隐藏在资源管理器中