C++ 这就是G++;4.4.1默认分配器?

C++ 这就是G++;4.4.1默认分配器?,c++,gcc,g++,memory-management,C++,Gcc,G++,Memory Management,我想知道在Ubuntu 9.1上的G++4.4.1中,哪个是默认的内存分配器。我对在多线程环境中比较不同的C++分配器有兴趣。我在哪里可以获得关于默认内存分配器的更多信息 编辑:我指的是新建和删除运算符。唯一的链接是rt和pthread G++将在G++附带的libstdc++中创建对运算符new()的引用。然后使用安装在系统(通常是glibc)上的libc中定义的malloc() 大多数替换分配器将其中一个指向它们的实现,通常它们只是替换malloc()。例如,您可以通过简单地预加载共享库来使

我想知道在Ubuntu 9.1上的G++4.4.1中,哪个是默认的内存分配器。我对在多线程环境中比较不同的C++分配器有兴趣。我在哪里可以获得关于默认内存分配器的更多信息

编辑:我指的是新建和删除运算符。唯一的链接是rt和pthread


G++将在G++附带的libstdc++中创建对运算符new()的引用。然后使用安装在系统(通常是glibc)上的libc中定义的malloc()

大多数替换分配器将其中一个指向它们的实现,通常它们只是替换malloc()。例如,您可以通过简单地预加载共享库来使用Google的TC Malloc。无需对编译后的应用程序进行任何更改。

g++新操作符确实是使用glibc malloc实现的。
然后使用标准unix系统调用mmap执行内存分配本身

您可以使用mallinfo获得有关内存分配器的更多信息。

有关更多信息,请参阅和。

您可以使用LD\u PRELOAD变量来使用自己的分配器。
LD_PRELOAD=“/path/your_lib_exporting_malloc.so”

在同一终端上运行与glibc动态链接的任何应用程序实际上都将使用您提供的malloc实现。
许多malloc实现都是免费提供的。
*TLSF
*杰马洛克
*dlmalloc(Doug Lea的malloc,永远存在)
*ptmalloc2(Doug Lea的malloc,扩展到支持每线程领域。)
*TCMalloc(谷歌的malloc,声称比ptmalloc2快6倍)
*nedmalloc(声称比tcmalloc快)
*囤积,也声称速度非常快
(来源:)

好吧,g++(编译器)并没有真正选择分配器-分配器取决于您链接的对象(默认情况下,libc中的实现)。这还取决于您指的是malloc还是新操作符。