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