我想知道在Ubuntu 9.1上,G++ 4.4.1使用的默认内存分配器是哪一个。我希望在多线程环境下比较不同的C++分配器。请问在哪里可以获取有关默认内存分配器的更多信息?
编辑:我的意思是new和delete操作符。唯一的链接是rt和pthread。
谢谢!
编辑:我的意思是new和delete操作符。唯一的链接是rt和pthread。
谢谢!
G++将在与G++一起提供的libstdc++中创建对operator new()的引用。这反过来使用安装在您系统上的libc中定义的malloc()(通常是glibc)。
大多数替代分配器将其中一个指向它们的实现,通常只需替换malloc()即可。例如,您可以通过简单地预加载其共享库来使用Google的TC Malloc。不需要对编译后的应用程序进行任何更改。
g++的new运算符确实是使用glibc的malloc实现的。
然后,内存分配本身是使用标准的Unix系统调用mmap执行的。
您可以使用mallinfo获取有关内存分配器的更多信息。
有关更多信息,请参见Malloc的统计信息和效率和Malloc。