在过去的几天里,我获得了有关标准内存分配器之外的一些信息malloc()
。有一些实现似乎比malloc()
对于具有多线程的应用程序。例如,似乎tcmalloc
and ptmalloc
有更好的性能。
我有一个使用两者的 C++ 应用程序malloc
and new
很多地方的运营商。我想用类似的东西替换它们ptmalloc
可能会提高其性能。但我想知道如何new
在 Linux 上运行的 C++ 应用程序中使用运算符时会执行什么操作?它是否使用标准行为malloc
或者是其他东西?
更换的最佳方法是什么new
内存分配器与代码中旧的内存分配器?有什么方法可以覆盖该行为或new
and 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
, 你可以重新定义它,这样它就可以.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)