重载malloc以跟踪第三方库的内存使用情况

时间:2011-06-20 17:18:37

标签: c++ c memory-management

  

可能重复:
  Best strategy for profiling memory usage of my code (open source) and 3rd party code(closed source)

我正在考虑实现一个内存跟踪工具来跟踪我的代码中的malloc,我将在编译时链接到一个库,用一个宏覆盖malloc,添加一些额外的调试信息,将一些内容打印到日志中。是否有可能使用我没有源代码的第三方库或者可能的调试库?您可以链接到库中,就像我在谈论第三方库一样,它会使用我库中定义的方法(或宏)吗?

由于

3 个答案:

答案 0 :(得分:1)

我认为你不能这样做,malloc是一个系统调用。

二进制库实际上并没有调用malloc(),它们将存储在您计算机上的库加载到内存中。然后在正确的内存地址执行该函数。

重新定义malloc()除了混淆之外不会做任何事情。

答案 1 :(得分:0)

使用profiler:AQTime对Visual Studio来说非常好。

答案 2 :(得分:0)

这取决于您尝试在哪个平台/操作系统上执行此操作:

  • 如果您在嵌入式设备上使用RTOS,您也可以直接在其中更改代码......
  • 如果您使用的是Linux,您可以在某个地方找到代码并在那里进行更改以重新编译,但是您的平台可能会对性能产生非常严重的影响。
  • 对于其他人,您可以在应用程序中使用包装器,将其称为“os_malloc”或类似的东西,并为任何调试或类似的任何东西实现该功能。

最后一个可能是你最安全的赌注,无论是什么......