vld
是一个 Visual Leak Detector(VLD)的缩写,是一个用于检测内存泄漏的工具。它是针对 Windows 平台的一个开源库,可用于在调试过程中检测应用程序中的内存泄漏问题。
使用 VLD,你可以通过在代码中引入 VLD 头文件并链接 VLD 库来启用内存泄漏检测。当程序运行时,VLD 会在程序退出时报告任何未释放的内存。它会提供详细的内存泄漏报告,包括泄漏的堆栈跟踪信息,以帮助你定位泄漏发生的位置。
需求:对结果进行自定义的排序,按照泄露大小排行
SIZE_T VisualLeakDetector::ReportLeaks(){ std::vector<std::pair<DWORD, SIZE_T>> array; }
如果在ReportLeaks中使用stl相关的类型,会在vldheap.cpp
报错
从调用堆栈中可以看到,的确是因为stl导致的,那只能使用vld提供的数据结构了
vld提供了Set、Map、Tree,如果要做排序只能自己写算法了,不能借助stl,vld自己其实提供了一个map,不清楚为啥他要自己实现一个,并且这个map提供的功能并不是非常好用,仅仅满足了他自己的需求。
目前就是使用它的数据结构实现了对result自定义排序的功能,暂时满足了项目的需求,至于为啥使用stl会崩溃,暂时就没有时间深究了。