我想在STL容器中使用TCMalloc,所以我需要一个使用TCMalloc构建的分配器(类似于TBB malloc中的tbb_allocator)。我找不到任何TCMalloc文档(如果它被称为文档的话)。因此,我开始探索头文件并发现了一个名为
STL_Allocator
的类。但是有些地方不太清楚。引用自stl_allocator.h:// Generic allocator class for STL objects
// that uses a given type-less allocator Alloc, which must provide:
// static void* Alloc::Allocate(size_t size);
// static void Alloc::Free(void* ptr, size_t size);
//
// STL_Allocator<T, MyAlloc> provides the same thread-safety
// guarantees as MyAlloc.
//
// Usage example:
// set<T, less<T>, STL_Allocator<T, MyAlloc> > my_set;
// CAVEAT: Parts of the code below are probably specific
// to the STL version(s) we are using.
// The code is simply lifted from what std::allocator<> provides.
STL_Allocator模板类的定义如下:
template <typename T, class Alloc>
class STL_Allocator {
//...
}
我不知道那个 Alloc
参数是什么。我应该为一些内存分配函数编写包装类吗?有人用过 TCMalloc 吗?
malloc
是一项艰巨的任务。此外,我的应用程序需要快速分配仅两个类的内存,即使对于其中一个类,放置newnew (tcmalloc :: alloc()) ClassName()
也可以完美地完成。 - ali_bahoo