Boost logo

Boost :

From: Joel Hock (joel_at_[hidden])
Date: 2023-06-21 23:48:50


951ca5725 changed malloc_need_resize() to use set_next_size(), which
sets start_size in addition to setting next_size. this causes repeated use
of purge_memory() to allocate 2x size after every use. as illustration:

>>>>>>>>>>>>>>>>>
#include <boost/pool/pool.hpp>

int main()
{
  boost::pool pool(8);

  for(int i = 0; i < 10; i++) {
    printf("%d %ld\n", i, pool.get_next_size());
    pool.purge_memory();
    void *ptr = pool.malloc();
    (void)ptr;
  }
}
<<<<<<<<<<<<<<<<<

before the commit the output is:
0 32
1 64
2 64
3 64
4 64
5 64
6 64
7 64
8 64
9 64

after the commit, the output is:
0 32
1 64
2 128
3 256
4 512
5 1024
6 2048
7 4096
8 8192
9 16384


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk