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

Overloading malloc to track memory usage of third party libraries

本文关键字:内存 用情 情况 malloc 跟踪 第三方 重载      更新时间:2023-10-16

可能重复:
分析我的代码(开源)和第三方代码(闭源)内存使用情况的最佳策略

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

感谢

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

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

重新定义malloc()不会做任何事情,只会混淆事物。

使用探查器:AQTime对于Visual Studio来说是一个非常好的探查器。

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

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

最后一个可能是你最安全的赌注,不管怎样。。。