red*_*ver 7 c++ linux memory-management
在过去的几天里,我获得了除标准以外的内存分配器的一些信息malloc().有些实现似乎比malloc()具有许多线程的应用程序好得多.例如,似乎tcmalloc并且ptmalloc具有更好的性能.
我有一个C++应用程序,在许多地方使用malloc和new运算符.我认为用ptmalloc可能会改善其性能的东西替换它们.但我想知道new运营商在Linux上运行的C++应用程序中如何运行?它是否使用标准行为malloc或其他东西?
new用代码中的旧内存分配器替换内存分配器的最佳方法是什么?有什么办法来覆盖这些行为或new和malloc或做我需要全部更换他们的电话一个接一个?
来自TCMalloc 文档:
要使用 TCmalloc,只需通过“-ltcmalloc”链接器标志将 tcmalloc 链接到您的应用程序中。您可以通过使用 LD_PRELOAD 在您未自行编译的应用程序中使用 tcmalloc:
$ LD_PRELOAD =“/usr/lib/libtcmalloc.so”
ptmalloc 似乎类似(但如果您使用的是 Linux,您可能已经在使用它了,因为它是 GNU C 库的一部分)。
我希望operator new调用malloc,但您可以通过设置断点malloc然后调用来轻松检查自己new。如果您new不调用malloc,则可以重新定义它以使其调用。