ACE  6.3.3
Public Member Functions | Private Attributes | List of all members
ACE_Cached_Mem_Pool_Node< T > Class Template Reference

ACE_Cached_Mem_Pool_Node keeps unused memory within a free list. More...

#include <Malloc_T.h>

Public Member Functions

T * addr (void)
 Return the address of free memory. More...
 
ACE_Cached_Mem_Pool_Node< T > * get_next (void)
 Get the next ACE_Cached_Mem_Pool_Node in a list. More...
 
void set_next (ACE_Cached_Mem_Pool_Node< T > *ptr)
 Set the next ACE_Cached_Mem_Pool_Node. More...
 

Private Attributes

ACE_Cached_Mem_Pool_Node< T > * next_
 

Detailed Description

template<class T>
class ACE_Cached_Mem_Pool_Node< T >

ACE_Cached_Mem_Pool_Node keeps unused memory within a free list.

The length of a piece of unused memory must be greater than sizeof (void*). This makes sense because we'll waste even more memory if we keep them in a separate data structure. This class should really be placed within the ACE_Cached_Allocator class but this can't be done due to C++ compiler portability problems.

Member Function Documentation

template<class T >
T * ACE_Cached_Mem_Pool_Node< T >::addr ( void  )
inline

Return the address of free memory.

template<class T >
ACE_Cached_Mem_Pool_Node< T > * ACE_Cached_Mem_Pool_Node< T >::get_next ( void  )
inline

Get the next ACE_Cached_Mem_Pool_Node in a list.

template<class T>
void ACE_Cached_Mem_Pool_Node< T >::set_next ( ACE_Cached_Mem_Pool_Node< T > *  ptr)
inline

Set the next ACE_Cached_Mem_Pool_Node.

Member Data Documentation

template<class T>
ACE_Cached_Mem_Pool_Node<T>* ACE_Cached_Mem_Pool_Node< T >::next_
private

Since memory is not used when placed in a free list, we can use it to maintain the structure of free list. I was using union to hide the fact of overlapping memory usage. However, that cause problem on MSVC. So, I now turn back to hack this with casting.


The documentation for this class was generated from the following files: