gpt4 book ai didi

c++ - 如何在删除期间摆脱虚假的 _BLOCK_TYPE_IS_VALID 断言失败?

转载 作者:太空宇宙 更新时间:2023-11-04 12:16:02 25 4
gpt4 key购买 nike

当我在 Debug模式下构建可视化 C++ 项目时,只需两行代码

TEnviron * fk = new TEnviron();
delete fk;

它从 _CrtIsValidHeapPointer 中抛出断言失败错误 _BLOCK_TYPE_IS_VALID。它的评论说

Verify pointer is not only a valid pointer but also that it is from the 'local' heap.

TEnviron 来自与我的主程序不同的 dll,因此它失败了。我迫切需要在我的软件中识别“真正的”内存损坏,所以我开始使用 debug build,希望它能捕获损坏,但它只是制造虚假噪音,不会让我继续下去陈述。男人就不能写delete语句吗?请在我被解雇之前提供帮助。

最佳答案

如果我们谈论 MSVC,我个人仅在该 DLL 中创建和删除从 DLL 导入的类的对象。所以它们总是存在于 DLL 的堆中,而不是主堆中。我使用一对静态函数创建/销毁来完成它。这样我就可以从任何地方安全地创建和删除对象。也许这不是您的最佳解决方案,但它可以解决您的问题。

关于c++ - 如何在删除期间摆脱虚假的 _BLOCK_TYPE_IS_VALID 断言失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7678328/

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