查找在时间 A 和时间 B 之间分配的内存,该内存在时间 C 仍未释放

find memory allocated between time A and time B which remains unfreed at time C

我知道 Visual Studio 允许您使用集成调试器 Memory Usage diagnostic tool 比较两个时间快照之间的内存以发现泄漏。但是,有没有办法从差异中过滤掉在开始时间 (A) 和结束时间 (C) 之间的另一个时间点 (B) 之后分配的任何内存?

Time A = start caring about memory that gets allocated

Time B = stop caring

Time C = all memory that was allocated between Time A and Time B should now be freed; if not, let's see the callstack that allocated each chunk

这不一定需要使用 Visual Studio 交互式诊断工具来完成,例如,如果有一种方法可以使用 _CrtMemCheckpoint 或其他方式来做到这一点。

虽然我已将此标记为 Visual Studio 2019 年问题,但我会接受任何使用免费提供的 Microsoft 工具(例如 WinDbg)或免费开源工具(例如 VLD(可视化泄漏检测器))来实现的解决方案同样的结果。

假设目标平台是 Windows 因为提到了 VS2019,所以我找到了一个与您正在寻找的工具类似的工具。 https://www.codeproject.com/Articles/11221/Easy-Detection-of-Memory-Leaks

它很旧但仍然可以编译。

MemoryHooks 中的代码可用于 new/delete 覆盖实现。 (void* operator new (std::size_t count ); and void operator delete (void* ptr);)