像purify和valgrind这样的内存泄漏检测工具是如何工作的?
我如何设计和实现我自己的这样的工具?
发布于 2010-05-18 17:11:05
这类工具通常使用它们自己的代码来检测可执行文件。例如,它们使用自己的函数替换对malloc()和free()的每次调用,这允许它们遵循每次分配。
在Visual Studio中,只需使用C运行时库并使用_CrtDumpMemoryLeaks()家族中的函数即可自动完成此操作
发布于 2010-05-18 17:10:03
对于基本的泄漏检测,您只需挂钩到低级内存分配例程,例如,通过修补malloc/free。然后,您可以跟踪所有分配,并随后报告在适当的时间点未释放的任何分配,例如在退出之前。
发布于 2010-05-18 17:14:44
在实际工作中,valgrind工作得很好。它检测无效的读/写和内存泄漏。
对于业余爱好项目,您可以创建自己的内存管理模块,跟踪各种指针分配及其使用情况。如果你长时间没有看到某个内存位置被使用,那可能是一个漏洞。
https://stackoverflow.com/questions/2855802
复制相似问题