What you are seeing is <i>most likely</i> caused by your malloc or string implementation (most likely not a bug, just an observation that differs from what you would expect). If your strings are of variable size, memory will most likely grow due to heap fragmentation. This should not grow unbounded, since after the second pass through the loop, the chunk of memory occupied by the first strings should be freed.<br> <br>To show that circular_buffer works as documented, try a more simple object like this:<br><br><span style="font-family:courier new,monospace">int allocations = 0;<br><br>struct AllocCountingObj<br>{<br>��� AllocCountingObj()<br> ��� {<br>������� ++allocations;<br>��� }<br>��� <br>��� AllocCountingObj(const AllocCountingObj&)<br>��� {<br>������� // still increment on copy-construct<br>������� ++allocations;<br>��� }<br>��� <br>��� ~AllocCountingObj()<br> ��� {<br>������� --allocations;<br>��� }<br>};</span><br><br>What compiler and STL implementation are you using and what are you using to view the memory use?<br><br><div class="gmail_quote">On Fri, Feb 1, 2013 at 2:59 PM, Salivar.William <span dir="ltr"><<a href="mailto:William.Salivar@igt.com" target="_blank">William.Salivar@igt.com</a>></span> wrote:<br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div link="blue" vlink="purple" lang="EN-US"><div><p class="MsoNormal">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.<u></u><u></u></p> <p class="MsoNormal"><u></u>�<u></u></p><p class="MsoNormal">Here�s basic usage<u></u><u></u></p><p class="MsoNormal"><u></u>�<u></u></p><p class="MsoNormal">Definition:<u></u><u></u></p><p class="MsoNormal"><u></u>�<u></u></p> <p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">����� boost::</span><span style="font-size:10.0pt;font-family:Consolas;color:#005032">circular_buffer</span><span style="font-size:10.0pt;font-family:Consolas"><std::</span><span style="font-size:10.0pt;font-family:Consolas;color:#005032">string</span><span style="font-size:10.0pt;font-family:Consolas">> </span><span style="font-size:10.0pt;font-family:Consolas;color:#0000c0">m_message_buffer</span><span style="font-size:10.0pt;font-family:Consolas">;</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal"><u></u>�<u></u></p><p class="MsoNormal">Initialization:<u></u><u></u></p><p class="MsoNormal"><u></u>�<u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">�� ���</span><span style="font-size:10.0pt;font-family:Consolas;color:#0000c0">m_message_buffer</span><span style="font-size:10.0pt;font-family:Consolas">.set_capacity (</span><i><span style="font-size:10.0pt;font-family:Consolas;color:#0000c0">10000</span></i><span style="font-size:10.0pt;font-family:Consolas">);</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal"><u></u>�<u></u></p><p class="MsoNormal">Usage:<u></u><u></u></p><p class="MsoNormal"><u></u>�<u></u></p><p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:10.0pt;font-family:Consolas;color:#7f0055">void</span></b><span style="font-size:10.0pt;font-family:Consolas"> <b>myClass::writeToBuffer</b> (</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7f0055">const</span></b><span style="font-size:10.0pt;font-family:Consolas"> </span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7f0055">char</span></b><span style="font-size:10.0pt;font-family:Consolas"> *message)</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">{</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"> <span style="font-size:10.0pt;font-family:Consolas">����� </span><span style="font-size:10.0pt;font-family:Consolas;color:#0000c0">m_message_buffer</span><span style="font-size:10.0pt;font-family:Consolas">.push_back (</span><span style="font-size:10.0pt;font-family:Consolas;color:#005032">string</span><span style="font-size:10.0pt;font-family:Consolas"> (message));</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal">}<u></u><u></u></p><p class="MsoNormal"><u></u>�<u></u></p><p class="MsoNormal">Boost code:<u></u><u></u></p><p class="MsoNormal"><u></u>�<u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">��� </span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7f0055">void</span></b><span style="font-size:10.0pt;font-family:Consolas"> <b><span style="background:silver">push_back</span></b>(</span><span style="font-size:10.0pt;font-family:Consolas;color:#005032">param_value_type</span><span style="font-size:10.0pt;font-family:Consolas"> item = </span><span style="font-size:10.0pt;font-family:Consolas;color:#005032">value_type</span><span style="font-size:10.0pt;font-family:Consolas">()) {</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">������� </span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7f0055">if</span></b><span style="font-size:10.0pt;font-family:Consolas"> (full()) {</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">����������� </span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7f0055">if</span></b><span style="font-size:10.0pt;font-family:Consolas"> (empty())</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">��������������� </span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7f0055">return</span></b><span style="font-size:10.0pt;font-family:Consolas">;</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">����������� replace(</span><span style="font-size:10.0pt;font-family:Consolas;color:#0000c0">m_last</span><span style="font-size:10.0pt;font-family:Consolas">, item);</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">����������� increment(</span><span style="font-size:10.0pt;font-family:Consolas;color:#0000c0">m_last</span><span style="font-size:10.0pt;font-family:Consolas">);</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">����������� </span><span style="font-size:10.0pt;font-family:Consolas;color:#0000c0">m_first</span><span style="font-size:10.0pt;font-family:Consolas"> = </span><span style="font-size:10.0pt;font-family:Consolas;color:#0000c0">m_last</span><span style="font-size:10.0pt;font-family:Consolas">;</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">������� } </span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7f0055">else</span></b><span style="font-size:10.0pt;font-family:Consolas"> {</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">����������� </span><span style="font-size:10.0pt;font-family:Consolas;color:#0000c0">m_alloc</span><span style="font-size:10.0pt;font-family:Consolas">.construct(</span><span style="font-size:10.0pt;font-family:Consolas;color:#0000c0">m_last</span><span style="font-size:10.0pt;font-family:Consolas">, item);</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">����������� increment(</span><span style="font-size:10.0pt;font-family:Consolas;color:#0000c0">m_last</span><span style="font-size:10.0pt;font-family:Consolas">);</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">����������� ++</span><span style="font-size:10.0pt;font-family:Consolas;color:#0000c0">m_size</span><span style="font-size:10.0pt;font-family:Consolas">;</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">������� }</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"> <span style="font-size:10.0pt;font-family:Consolas">��� }</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p><p class="MsoNormal"><u></u>�<u></u></p><p class="MsoNormal"><u></u>�<u></u></p> <p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">��� </span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7f0055">void</span></b><span style="font-size:10.0pt;font-family:Consolas"> <b><span style="background:silver">replace</span></b>(</span><span style="font-size:10.0pt;font-family:Consolas;color:#005032">pointer</span><span style="font-size:10.0pt;font-family:Consolas"> pos, </span><span style="font-size:10.0pt;font-family:Consolas;color:#005032">param_value_type</span><span style="font-size:10.0pt;font-family:Consolas"> item) {</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">������� *pos = item;</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"> <b><span style="font-size:10.0pt;font-family:Consolas;color:#7f0055">#if</span></b><span style="font-size:10.0pt;font-family:Consolas"> BOOST_CB_ENABLE_DEBUG</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">������� invalidate_iterators(</span><span style="font-size:10.0pt;font-family:Consolas;color:#005032">iterator</span><span style="font-size:10.0pt;font-family:Consolas">(</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7f0055">this</span></b><span style="font-size:10.0pt;font-family:Consolas">, pos));</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p> <p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:10.0pt;font-family:Consolas;color:#7f0055">#endif</span></b><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"> <span style="font-size:10.0pt;font-family:Consolas">��� }</span><span style="font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p><p class="MsoNormal"><u></u>�<u></u></p></div></div><br>_______________________________________________<br> Boost-users mailing list<br> <a href="mailto:Boost-users@lists.boost.org">Boost-users@lists.boost.org</a><br> <a href="http://lists.boost.org/mailman/listinfo.cgi/boost-users" target="_blank">http://lists.boost.org/mailman/listinfo.cgi/boost-users</a><br></blockquote></div><br><br clear="all"><br>-- <br>Travis Gockel<div>� Combinator</div> <br>