C++;课程期间(字体)资源的分配 我有一些资源要分配给C++程序,我想让这些资源到 在程序执行的整个生命周期内都是可访问的 全球可访问
我正在写一个需要一些字体资源的程序。它由一个类组成,该类有一个指针,指向表示字体rgb颜色的一些C++;课程期间(字体)资源的分配 我有一些资源要分配给C++程序,我想让这些资源到 在程序执行的整个生命周期内都是可访问的 全球可访问,c++,fonts,resources,C++,Fonts,Resources,我正在写一个需要一些字体资源的程序。它由一个类组成,该类有一个指针,指向表示字体rgb颜色的一些无符号字符数据。该类还有一些其他成员,例如字体字符的尺寸 我想我可以通过创建一个静态(是否必须是静态的?)指针来解决问题2。我可以在字体类头文件中声明一个指针,任何需要字体的代码都应该包含这个头文件,这样就可以全局访问指针 但是,我不知道如何防止在程序执行期间修改指针。这可能是个问题,因为任何使用代码都可以执行global\u font\u ptr=nullptr,这将导致程序稍后崩溃。更糟糕的是,
无符号字符
数据。该类还有一些其他成员,例如字体字符的尺寸
我想我可以通过创建一个静态(是否必须是静态的?)指针来解决问题2。我可以在字体类头文件中声明一个指针,任何需要字体的代码都应该包含这个头文件,这样就可以全局访问指针
- 但是,我不知道如何防止在程序执行期间修改指针。这可能是个问题,因为任何使用代码都可以执行
,这将导致程序稍后崩溃。更糟糕的是,将其设置为随机地址会导致未定义的行为global\u font\u ptr=nullptr
int main()
中的函数来加载字体。这对于必须调用该函数以手动处理字体加载的最终用户来说是不方便的
我可以创建一个类的静态实例并让类构造函数加载字体吗
不确定我应该采取什么方法来解决这个问题。我希望我的解释是清楚的。显而易见的解决方案不是使用全局字体指针,而是将其封装在具有长期运行寿命的类中。公开指向资源的指针,特别是在头文件中,说明了资源/内存管理不善,并可能导致各种问题,包括ODR冲突或延迟初始化的黑客解决方法(取决于您的代码实际执行的操作) 一般而言:
- 您希望能够在不影响全局状态的情况下轻松切换字体
- 您不想将资源管理的负担转嫁给用户;init、construct和destroy模式被RAII和类取代