
I am using the circular buffer container to hold up to 10000 std string objects. I am finding that once the buffer has reached max capacity, memory continues to be consumed as I push new strings in. Is there something I'm missing? I stepped into the boost code and it does make a copy of the string using the std string operator so I would think it handles the string copy properly. The size of the strings are variable but I would expect the memory usage to be fairly stable when the buffer is full but that is not the case. Here's basic usage Definition: boost::circular_bufferstd::string m_message_buffer; Initialization: m_message_buffer.set_capacity (10000); Usage: void myClass::writeToBuffer (const char *message) { m_message_buffer.push_back (string (message)); } Boost code: void push_back(param_value_type item = value_type()) { if (full()) { if (empty()) return; replace(m_last, item); increment(m_last); m_first = m_last; } else { m_alloc.construct(m_last, item); increment(m_last); ++m_size; } } void replace(pointer pos, param_value_type item) { *pos = item; #if BOOST_CB_ENABLE_DEBUG invalidate_iterators(iterator(this, pos)); #endif }