执行boost::circular buffer确认自动弹出操作

does boost::circular_buffer acknowledge an automatic pop operation

本文关键字:操作 确认 boost circular buffer 执行      更新时间:2023-10-16

是否必须将std::shared_ptr的存储在boost::circular_buffer中?如果我有一个boost::circular_buffer<T*>,那么循环队列delete是在第n+1次插入后自动弹出的元素吗?

如果没有,我将如何删除弹出的元素和管理内存泄漏?

当然,存储shared_ptr s不是强制性的,您可以存储许多不同的类型,例如,像int 这样简单的东西

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

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