首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于STL的TCMalloc分配器

用于STL的TCMalloc分配器
EN

Stack Overflow用户
提问于 2011-03-14 06:46:29
回答 2查看 5K关注 0票数 3

我想在STL容器中使用TCMalloc,所以我需要一个用TCMalloc构建的分配器(就像带有TBB malloc的tbb_allocator )。我找不到任何TCMalloc documentation (如果它被称为文档)。因此,我开始探索头文件,并找到一个名为STL_Allocator的类。但有些事情我不太清楚。引用自stl_allocator.h:

代码语言:javascript
复制
// 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模板类的定义为:

代码语言:javascript
复制
template <typename T, class Alloc>
class STL_Allocator {
//...
}

我不知道Alloc的争论是什么。我是不是应该为一些内存分配函数编写一个包装类?有人用过TCMalloc吗?

EN

回答 2

Stack Overflow用户

发布于 2011-04-05 05:56:05

TCMalloc中的STL_Allocator类是一个适配器类:您使用一个(更简单的)TCMalloc类来实例化它,它提供了AllocateFree方法,就像您引用的注释一样,而且--瞧--您得到了一个实现STL allocator的所有要求的类(请访问关于什么是STL分配器以及如何实现它的介绍性文章的链接)。

使用的示例包括Null Setanother answer中起草的simple_alloc类,但在TCMalloc源代码中有一个示例:文件memory_region_map.h中的MyAllocator类。

但是,请注意,定义STL_Allocator的头文件是一个内部文件,并不是作为TCMalloc库的公共包含文件的一部分安装的。

也就是说,请注意,在C++代码中不需要使用自定义分配器来从TCMalloc中获益:如果标准分配器在某些时候使用了malloc(),您只需要预加载或链接到TCMalloc,仅此而已。如果您使用的是GNU编译器,那么您可以使用#include 来使用一个分配器,该分配器只需包装malloc(),而不需要额外的逻辑。

票数 8
EN

Stack Overflow用户

发布于 2011-03-14 09:30:13

我不知道它是否会工作,但尝试一下这个简单的malloc和free包装。

代码语言:javascript
复制
#include <cstdlib.h>

struct simple_alloc {
    static void* Allocate(size_t size){
        return malloc(size);
    }
    static void Free(void* ptr, size_t size){
        free(ptr);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5292994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档