我在用_CrtDump内存泄漏 http://msdn.microsoft.com/en-gb/library/d41t22sb.aspx识别我们软件中的内存泄漏。我们在多线程应用程序中使用第三方库。这个库确实存在内存泄漏,因此在我们的测试中,我们希望识别出我们的内存泄漏,并丢弃我们无法控制的内存泄漏。
我们使用持续集成,因此不断添加新功能/算法/错误修复。
所以问题是 - 是否有一种安全的方法来识别我们的泄漏和第三方库的泄漏。我们考虑过使用分配编号,但这安全吗?
在一个大型应用程序中,我致力于全球new
and delete
运算符被覆盖(例如,参见如何正确替换全局new和delete运算符 https://stackoverflow.com/questions/8186018/how-to-properly-replace-global-new-delete-operators)和使用的私有堆(例如HeapCreate http://msdn.microsoft.com/en-us/library/windows/desktop/aa366599(v=vs.85).aspx)。第三方库将使用进程堆,因此分配将被清楚地分开。
坦率地说,我认为你无法在分配数字上走得太远。对应用程序/库使用显式单独的堆(甚至可能在您自己的应用程序中具有单独的每个组件堆)会更易于管理。考虑一下您可以添加your own每个分配的块的应用程序特定标头,从而实现非常奇特的内存跟踪。例如,可以捕获整个调用堆栈的分配,以进行调试。启用每个组件的记帐。等等等等.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)