21 Jun
2023
21 Jun
'23
11:48 p.m.
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
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