Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Class template rbtree_best_fit

boost::interprocess::rbtree_best_fit

Synopsis

// In header: <boost/interprocess/mem_algo/rbtree_best_fit.hpp>

template<typename MutexFamily, typename VoidPointer, std::size_t MemAlignment> 
class rbtree_best_fit {
public:
  // types
  typedef MutexFamily                                                   mutex_family;           // Shared mutex family used for the rest of the Interprocess framework. 
  typedef VoidPointer                                                   void_pointer;           // Pointer type to be used with the rest of the Interprocess framework. 
  typedef unspecified                                                   multiallocation_chain;
  typedef boost::intrusive::pointer_traits< char_ptr >::difference_type difference_type;      
  typedef boost::container::dtl::make_unsigned< difference_type >::type size_type;            

  // public member functions
  rbtree_best_fit(size_type, size_type);
  ~rbtree_best_fit();
  void * allocate(size_type);
  void deallocate(void *);
  size_type get_size() const;
  size_type get_free_memory() const;
  void zero_free_memory();
  void grow(size_type);
  void shrink_to_fit();
  bool all_memory_deallocated();
  bool check_sanity();
  size_type size(const void *) const;
  void * allocate_aligned(size_type, size_type);

  // public static functions
  static size_type get_min_size(size_type);

  // public data members
  static const size_type PayloadPerAllocation;
};

Description

This class implements an algorithm that stores the free nodes in a red-black tree to have logarithmic search/insert times.

rbtree_best_fit public member functions

  1. rbtree_best_fit(size_type size, size_type extra_hdr_bytes);

    Constructor. "size" is the total size of the managed memory segment, "extra_hdr_bytes" indicates the extra bytes beginning in the sizeof(rbtree_best_fit) offset that the allocator should not use at all.

  2. ~rbtree_best_fit();
    Destructor.
  3. void * allocate(size_type nbytes);

    Allocates bytes, returns 0 if there is not more memory. Returned memory is aligned to Alignment bytes.

  4. void deallocate(void * addr);
    Deallocates previously allocated bytes.
  5. size_type get_size() const;
    Returns the size of the memory segment.
  6. size_type get_free_memory() const;
    Returns the number of free bytes of the segment.
  7. void zero_free_memory();

    Initializes to zero all the memory that's not in use. This function is normally used for security reasons.

  8. void grow(size_type extra_size);

    Increases managed memory in extra_size bytes more

  9. void shrink_to_fit();
    Decreases managed memory as much as possible.
  10. bool all_memory_deallocated();
    Returns true if all allocated memory has been deallocated.
  11. bool check_sanity();

    Makes an internal sanity check and returns true if success

  12. size_type size(const void * ptr) const;
    Returns the size of the buffer previously allocated pointed by ptr.
  13. void * allocate_aligned(size_type nbytes, size_type alignment);

    Allocates aligned bytes, returns 0 if there is not more memory. Alignment must be power of 2

rbtree_best_fit public static functions

  1. static size_type get_min_size(size_type extra_hdr_bytes);
    Obtains the minimum size needed by the algorithm.

PrevUpHomeNext