既然scoped_ptr
保证给定线程中的所有对象都以类似堆栈的方式分配,那么为 下的对象指定“自定义堆”最不痛苦的方法是scoped_ptr
什么?
(例如对于vector
s、deque
s、string
s 等)
(这将使我们几乎完全避免传统的堆开销,得到一个几乎与堆栈一样快但与堆一样大的池。)
既然scoped_ptr
保证给定线程中的所有对象都以类似堆栈的方式分配,那么为 下的对象指定“自定义堆”最不痛苦的方法是scoped_ptr
什么?
(例如对于vector
s、deque
s、string
s 等)
(这将使我们几乎完全避免传统的堆开销,得到一个几乎与堆栈一样快但与堆一样大的池。)
scoped_ptr
,和一般的智能指针,对它们持有的对象分配的内存没有影响。如果由于某种原因您有 a ,则存储在 a中scoped_ptr<std::vector<T> >
的事实与从何处获取内存完全无关。std::vector<T>*
scoped_ptr
std::vector<T>
当然,std::vector<T>
已经是一个 RAII 类型(像所有其他标准库类一样)会自行清理的事实意味着将它们粘贴在 ascoped_ptr
中是毫无意义的。
简而言之,你所说的根本与你无关scoped_ptr
。它与您用于容器类的分配器有关。你找错树了。