ACE_Cached_Allocator预先分配内存,然后使用它自己的内部机制来管理内存。这样的分配发生在类的构造器中。所以使用它,仅在开始时使用OS内存分配接口来完成分配。
在那以后,它将照管所有内存分配和释放。
这样做的好处是性能和可预测性。设想一个必须高度可预测的实时系统,通过OS来分配内存将涉及昂贵和不可预测的OS内核调用。而ACE_Cached_Allocator不会涉及这种调用,每一次分配和释放都会花费固定的时间。
那么该如何使用这个类呢?
我们先看一下它的类的声明:
template <class T, class ACE_LOCK>
class ACE_Cached_Allocator : public ACE_New_Allocator
{
public:
~ACE_Cached_Allocator (void);
void *malloc (size_t nbytes = sizeof (T));
virtual void *calloc (size_t nbytes,
char initial_value = '\0');
virtual void *calloc (size_t n_elem,
size_t elem_size,
char initial_value = '\0');
void free (void *);
size_t pool_depth