由于scoped_ptr
保证给定线程中的所有对象都以类似堆栈的方式分配,为scoped_ptr
下的对象指定“自定义堆”的最不痛苦的方法是什么? />
(例如vector
s,deque
s,string
s等。
(这将允许我们几乎完全避免传统的堆开销,获得几乎与堆栈一样快的池,但是与堆一样大。)
答案 0 :(得分:3)
scoped_ptr
和智能指针一般来说,对它们所拥有的对象分配的内存无效。如果由于某种原因您有{{1}},则scoped_ptr<std::vector<T> >
存储在std::vector<T>*
中的事实与scoped_ptr
获取其内存的位置完全无关。
当然,std::vector<T>
已经是一个RAII类型(就像所有其他标准库类一样),它会在自身之后进行清理,这意味着将它们放在std::vector<T>
中是毫无意义的。< / p>
简而言之,您所谈论的内容与scoped_ptr
完全没有关系。它与您用于容器类的 allocators 有关。你正在咆哮错误的树。