3

是否必须强制存储std::shared_ptrboost::circular_buffer如果我有一个boost::circular_buffer<T*>循环队列deletes 是在第 n+1 次插入后自动弹出的元素吗?

如果不是,那么我将如何删除弹出的元素并管理内存泄漏?

4

1 回答 1

2

当然存储s 不是强制性shared_ptr的,你可以存储很多不同的类型,例如简单的int

如果您存储指针,容器不知道它们指向堆上的对象,因此在用新元素覆盖现有元素时它不会删除它们,它不知道删除指针是安全的。指针只是被一个新值覆盖。如果那是指向堆上对象的最后一个指针,则说明存在内存泄漏。这在页面下方不到四分之一的地方被非常清楚地记录下来。也许您应该阅读文档。

如果您存储指向堆对象的指针并且您没有其他方法来管理它们,那么是的,存储shared_ptr<T>是明智的(但不是强制性的)。

于 2012-07-31T19:28:58.957 回答