Stl c++ 动态内存分配

Stl c++ dynamic memory allocation

本文关键字:分配 内存 动态 c++ Stl      更新时间:2023-10-16

我遇到了一些遗留代码,我看到了这个。

typedef std::queue < EventDataPair > EventQueue;
_eventQueue = new EventQueue();

为什么要使用在堆上分配的 stl 队列???包含此代码的类是单例。

概括地说,什么时候应该在堆上分配一个 stl ???STL 本身本质上是动态的,它们可能在内部使用堆。

此外,您不会有在析构函数中解除分配它的开销吗?

好吧,除非你想在代码中的不同上下文之间共享特定对象,否则没有太多的动力在堆上分配。

但是,对于某些遗留架构,您可能会担心堆栈的大小。

我能想到的一个原因是避免在从函数返回副本时创建副本的开销。

但是,对于 C++ 11 和移动语义,不再需要这样做。

看看Bjarne Stroustrap正在谈论的这个例子。