gpt4 book ai didi

c++ - 在现有代码中替换新内存分配器的最佳解决方案是什么?

转载 作者:IT王子 更新时间:2023-10-29 00:35:26 29 4
gpt4 key购买 nike

在过去的几天里,除了标准的 malloc() 之外,我还获得了一些关于内存分配器的信息。对于具有多线程的应用程序,有些实现似乎比 malloc() 好得多。例如,tcmallocptmalloc 似乎有更好的性能。

我有一个 C++ 应用程序,它在许多地方同时使用 mallocnew 运算符。我认为用 ptmalloc 之类的东西替换它们可能会提高其性能。但我想知道 new 运算符在 Linux 上运行的 C++ 应用程序中使用时如何操作?它是否使用 malloc 或其他东西的标准行为?

用代码中的旧内存分配器替换 内存分配器的最佳方法是什么?有没有什么方法可以覆盖 newmalloc 的行为,或者我是否需要一一替换对它们的所有调用?

最佳答案

来自TCMalloc documentation :

To use TCmalloc, just link tcmalloc into your application via the "-ltcmalloc" linker flag.You can use tcmalloc in applications you didn't compile yourself, by using LD_PRELOAD:

$ LD_PRELOAD="/usr/lib/libtcmalloc.so"

ptmalloc 看起来很相似(但如果您使用的是 Linux,您可能已经在使用它 because it's part of the GNU C library )。

我希望 operator new调用malloc , 但您可以通过在 malloc 上设置断点轻松地自行检查, 然后调用 new .如果你的new不打电话 malloc , you can redefine it so that it does .

关于c++ - 在现有代码中替换新内存分配器的最佳解决方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1519772/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com