为什么要在堆中创建全局对象?

时间:2018-04-12 11:45:56

标签: c++ object heap

当我阅读ogre3d,opengl或者物理框架的教程时,所有对象(Window,SceneManager对象)都是在堆中创建的?

他们是否使用堆来“销毁对象指针但堆对象仍然存在(比对象长)”?

抱歉英语不好

1 个答案:

答案 0 :(得分:3)

有很多可能的原因:

  1. 这只是偶然的,不必要的:

    • 作者并不知道更好。并非所有的教程作者都是专家,他们也不一定要完善他们的教程代码。
    • 作者根据一个重要的完整项目对教程进行了建模,但原因在教程中丢失了。
  2. 因为物品很大。这是反对使用自动对象的论据,但与静态无关。

  3. 因为初始化需要延迟。

    • 这样可以更好地处理错误,并且可以对静态初始化顺序惨败进行一步一步。
    • 这也可以通过首次使用初始化初始化来实现,而不需要动态分配。
  4. 框架选择使用一种特殊的单例模式,它依赖于动态分配的单例,因为框架会自动删除它们。我知道Ogre::LogManager就是这种情况。