gpt4 book ai didi

c++ - 来自无处的用户断点

转载 作者:可可西里 更新时间:2023-11-01 18:27:01 26 4
gpt4 key购买 nike

我正在调试 MS VC++ 6.0 中的一些代码。出于某种原因,在我试图删除一些动态分配的内存的这个特定点上,它中断了,我得到一个弹出消息框,上面写着“用户断点从代码中调用 blah blah”.. 然后弹出反汇编窗口,我看

*memory address* int      3

奇怪的是,在我调用这样的汇编指令的代码中没有任何地方(我认为 asm int 3 是 x86 的硬件中断命令?)..

这可能是什么原因造成的?

编辑:回答:我的代码是“离开数组的末端”,但仅在 Visual Studio 调试标记为 0xFDFDFDFD 的位置,这称为 NoMan'sLand 栅栏。我认为它也称为 Off一个错误.. 这个数组与错误发生时我释放内存的点无关。这使得它更难被发现.. :(

最佳答案

您可能正在调试堆例程中发现堆损坏的代码。

当您点击 Int 3 时,调用堆栈是什么样子的?

编辑:根据您评论中的堆栈跟踪,例程 _CrtIsValidHeapPointer() 表示正在释放的指针是错误的。下面是来自 MSVC 的 DBGHEAP.C 源的代码片段:

    /*
* If this ASSERT fails, a bad pointer has been passed in. It may be
* totally bogus, or it may have been allocated from another heap.
* The pointer MUST come from the 'local' heap.
*/
_ASSERTE(_CrtIsValidHeapPointer(pUserData));

pUserData 将是您要删除的指针的值。

关于c++ - 来自无处的用户断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/385370/

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