c++ - 动态分配还是自动推荐子系统创建?

标签 c++ performance heap-memory stack-memory

我是一名业余爱好者 C++ 程序员,目前正在开发一款游戏(使用 Ogre3D),我对我的主类的内存分配有疑问。

我读了很多关于内存分配的文章,在堆栈上自动分配和在堆上动态分配,以及它们的区别(性能、有限的堆栈大小)。我仍然不确定我的主类(Application)和其他一些“工厂”类(由 Application 类的单个实例创建)使用什么,它们在整个执行过程中都将有一个实例。

下面是布局的简化片段:

int main() 
{
    // like this (automatic)
    Application app;
    app.create();    // initializing
    app.run();       // runs the game-loop

    // or like this (dynamic)
    Application* app;
    app = new Application();
    app->create();
    app->run();

    return(0);       // only reached after exiting game
}



class Application
{
public:
    Application();   // ctor
    ~Application();  // dtor

    // like this, using 'new' in ctor and 'delete' in dtor (dynamic)
    SceneManager* sceneManager_;   // a factory for handling scene objects
    DebugManager* debugManager_;   // a factory for handling debugging objects

    // or like this (automatic)
    SceneManager sceneManager_;
    DebugManager debugManager_;
};

在栈上分配内存还是在堆上分配内存更好(对于 Application 类和工厂类)?以及根据什么论点?

提前致谢!

最佳答案

总是喜欢自动分配而不是动态分配。当您需要动态分配时,请确保其生命周期由自动分配的资源包装器管理,例如智能指针。

关于c++ - 动态分配还是自动推荐子系统创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5073122/

相关文章:

c++ - 为什么 Linux NETLINK 手册页提供了 C++ 示例而不提供 C 示例?

performance - 这个 Haskell 合并代码的运行时间是多少

Java 大页面和详细 GC header

c++ - 为什么动态内存分配(堆)出现运行时错误?

c - malloc 导致 int 改变值

c++ - 根据编译时常量,使用 #define'd 或 typedef'ed 相同的标识符是否被认为是可接受的做法?

C++:在两个类中使用模板化 typedef

C++ 指针 为什么?

c++ - 减少 C++ 代码中的循环次数是否有助于提高速度?

c - 如何在 OpenMP 中从多个线程保存文件中的 wtime 差异?