Stl c ++动态内存分配

时间:2015-01-21 15:45:09

标签: c++ stl heap

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

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

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

要概括它,何时应该在堆上分配一个stl ??? STL本身就是动态的,它们可能在内部使用堆。

此外,您是否有在析构函数中解除分配的开销?

2 个答案:

答案 0 :(得分:2)

好吧,除非您想在代码中的不同上下文之间共享特定对象,否则在堆上分配的动机并不大。

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

答案 1 :(得分:1)

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

但是,使用C ++ 11并移动语义不再需要它了。

看看Bjarne Stroustrap正在谈论的this example