Public Member Functions
|T *||addr (void)|
|Return the address of free memory. |
|ACE_Cached_Mem_Pool_Node< T > *||get_next (void)|
|Get the next ACE_Cached_Mem_Pool_Node in a list. |
|void||set_next (ACE_Cached_Mem_Pool_Node< T > *ptr)|
|Set the next ACE_Cached_Mem_Pool_Node. |
|ACE_Cached_Mem_Pool_Node< T > *||next_|
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.
|ACE_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE T * ACE_Cached_Mem_Pool_Node< T >::addr||(||void||)||
Return the address of free memory.
|ACE_INLINE ACE_Cached_Mem_Pool_Node< T > * ACE_Cached_Mem_Pool_Node< T >::get_next||(||void||)||
Get the next ACE_Cached_Mem_Pool_Node in a list.
|ACE_INLINE void ACE_Cached_Mem_Pool_Node< T >::set_next||(||ACE_Cached_Mem_Pool_Node< T > *||ptr||)||
Set the next ACE_Cached_Mem_Pool_Node.
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.