面试题答案
一键面试-
Valgrind
- 基本原理:Valgrind构建了一个虚拟的CPU环境。当程序在这个环境中运行时,它会监控内存的分配与释放操作。例如,当程序调用
malloc
分配内存时,Valgrind会记录下这块内存的相关信息。如果程序在运行结束时,某些已分配的内存没有被释放,Valgrind就能检测到,并报告这些未释放内存块的相关信息,如内存地址、大小以及分配的位置等。
- 基本原理:Valgrind构建了一个虚拟的CPU环境。当程序在这个环境中运行时,它会监控内存的分配与释放操作。例如,当程序调用
-
Purify
- 基本原理:Purify通过修改目标程序的二进制代码来实现对内存操作的监控。在程序运行过程中,它会对每一次内存访问进行检查。对于分配的内存,Purify会标记其状态,当内存释放时,更新相应标记。若程序结束后,仍有标记为已分配但未释放的内存块,就判定为内存泄漏,并给出详细的泄漏报告,包括泄漏发生的函数调用栈等信息。