gpt4 book ai didi

c++ - _CrtSetBreakAlloc 跟踪 COM 对象中的内存泄漏

转载 作者:行者123 更新时间:2023-11-30 04:36:01 24 4
gpt4 key购买 nike

当我的应用程序完成时,visual studio 中的调试构建打印出所有未分配的对象和未释放的分配序列号。然后通常我只是调用 _CrtSetBreakAlloc(x),其中“x”是分配序列号,并在分配时得到一个方便的 ASSERT。然而,当泄漏发生在 COM 对象中时,这显然不起作用。有没有一种简单的方法可以使用分配序号让执行停止?我尝试在 dbgheap.c 中设置一个条件断点,但它也没有触发,我不明白这一点——COM 对象是作为调试构建的。

最佳答案

_CrtSetBreakAlloc 函数仅适用于您的模块链接到的 C 运行时库。在这种情况下,它将与链接到您的应用程序的 C 运行时库一起工作。我假设您的 COM 对象存在于另一个模块中(大概是 DLL)。如果 COM 对象静态链接到 C 运行时库,那么调用 _CrtSetBreakAlloc 将不会影响模块边界,因为您的应用程序和 COM 模块不共享相同的运行时和堆。

你能修改 COM 模块的源/构建吗?

关于c++ - _CrtSetBreakAlloc 跟踪 COM 对象中的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4832669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com