c – 用于STL的TCMalloc分配器

c – 用于STL的TCMalloc分配器,第1张

概述我想将TCMalloc与STL容器一起使用,所以我需要一个用TCMalloc构建的分配器(就像带有TBB malloc的tbb_allocator).我找不到任何东西 TCMalloc documentation(如果它被称为文档).所以我开始探索头文件并找到一个名为STL_Allocator的类.但有些事情对我来说并不清楚.来自stl_allocator.h的报价: // Generic all 我想将tcmalloc与STL容器一起使用,所以我需要一个用tcmalloc构建的分配器(就像带有TBB malloc的tbb_allocator).我找不到任何东西 TCMalloc documentation(如果它被称为文档).所以我开始探索头文件并找到一个名为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吗?

解决方法 tcmalloc中的STL_Allocator类是一个适配器类:你
使用(更简单的)Alloc类来提供Allocate和
你引用的评论中的免费方法,以及-voila-你得到了
实现所有要求的类
STL allocator(点击链接获取介绍性文章
什么STL分配器以及如何实现一个).

使用示例包括Null Set的simple_alloc类
起草于another answer,但在tcmalloc中有一个例子
sources:文件memory_region_map.h中的MyAllocator类.

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

也就是说,请注意,不需要使用自定义分配器
从C代码中的tcmalloc中受益:如果标准分配器使用
malloc()在某些时候,你只需要预加载或链接tcmalloc
就是这样.如果您使用的是GNU C编译器,则可以使用仅包装的分配器#include <ext/malloc_allocator.h>malloc()没有额外的逻辑.

总结

以上是内存溢出为你收集整理的c – 用于STL的TCMalloc分配器全部内容,希望文章能够帮你解决c – 用于STL的TCMalloc分配器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1213506.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存