【发布时间】:2016-07-17 07:49:16
【问题描述】:
我正在尝试提高我的 C++ 程序的性能,我发现将内存分配 (malloc) 转换为对象池会产生很好的效果。 问题在于检测调用 malloc 的位置,因为代码库非常大。我不能使用带断点的简单 gdb,因为有许多计时器和信号处理程序并行运行。
gdb 中有没有一种方法可以在调用 malloc 时打印整个堆栈跟踪,而不必每次都手动执行。 或者 你能推荐任何其他工具来帮助我做同样的事情吗?
【问题讨论】:
-
在整个代码库中搜索字符串
malloc有多难? -
为什么在 C++ 代码中使用 malloc?你应该使用新的。在这种情况下,您可以定义自己的新运算符
-
你可以在 GDB 中做this 吗?如果它落在 malloc(或 new)中,您就找到了一个活的。如果没有,在 20 个左右的样本之后,它使用的时间太少,以至于优化它真的不值得。
-
@MikeDunlavey 它将登陆 malloc 因为 new 使用它.. 我想 pool 也使用它