Boost.Pool regression: purge_memory() causes initial size to double on subsequent allocation
 
            
            
            
            
                22 Jun
                
                    2023
                
            
            
                22 Jun
                
                '23
                
            
            
            
        
    
                1:48 a.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 <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
        863
        
      
          Age (days ago)
        
      
        863
        
    
          Last active (days ago)
        
        
        
        0 comments
    
    
        
        1 participants
    
    
    
    
    
    
    
    
    participants (1)
- 
                 Joel Hock Joel Hock