重载malloc以跟踪第三方库的内存使用情况
Overloading malloc to track memory usage of third party libraries
可能重复:
分析我的代码(开源)和第三方代码(闭源)内存使用情况的最佳策略
我正在考虑实现一个内存跟踪工具来跟踪我代码中的malloc,方法是创建一个库,我将在编译时链接该库,用宏覆盖malloc以添加一些额外的调试信息,这些信息将打印一些内容到日志中。有没有可能用我没有源代码的第三方库来做这件事,或者可能使用调试库?你能像我所说的那样在库中链接到第三方库,它将使用我的库中定义的方法(或宏)吗?
感谢
我认为你做不到,malloc是一个系统调用。
二进制库实际上并没有调用malloc(),而是将存储在机器上的库加载到内存中。然后在正确的内存地址执行函数。
重新定义malloc()不会做任何事情,只会混淆事物。
使用探查器:AQTime对于Visual Studio来说是一个非常好的探查器。
这取决于您尝试在哪个平台/OS上执行此操作:
- 如果你在嵌入式设备上使用RTOS,你也可以直接在那里更改代码
- 如果您使用的是Linux,您可能能够在某个地方找到代码并将其更改为重新编译,但您可能会对平台的性能产生相当严重的影响
- 对于其他人,您可以在应用程序中使用包装器,将其称为"os_malloc"或类似的东西,并为任何调试或类似的事情实现该函数
最后一个可能是你最安全的赌注,不管怎样。。。
相关文章:
- 任务管理器 - C/C++ 应用程序 - 分配的地址空间与已用内存
- 针对某些特定用例的C++原子内存排序
- 用C++压缩内存中的位图
- 用c++防止内存泄漏
- 内存浪费?如果main()应该只返回0或1,那么为什么main是用int而不是短int甚至char声明的
- 大约"circular reference",我用了weak_ptr但仍然发生内存泄漏
- 你能用内存反序列化字节吗?
- 使用重载的 new 和 delete 运算符跟踪已用内存
- 用C 和Marshall分配给C#的内存
- 当我用clang编译代码时,GCOV会出现内存错误
- 用多个传感器克服Arduino内存限制
- 在闭包中,如何通过存储在内存中的指针或引用类型捕获可变性或用现代函数式语言进行处理?
- CUDA:共享内存的超载以用多个数组实现还原方法
- 我可以动态分配以前分配的内存,但用不同的指针分配
- 从多个线程写入内存区域是否会导致争用?
- 用valgrind分析c++字符内存泄漏
- 为什么用空函数运行std::线程会花费大量内存
- 用new分配4k int后的内存覆盖
- 定义一个C宏并将内存地址设置为用C和C++编写的结构成员
- 除了内存管理,QObject的父级是做什么用的?