在我的程序中的某一时刻,我调用 GlobalFree() 来释放我使用 GMEM_FIXED 标志通过 GlobalAlloc() 分配的内存缓冲区。没有任何东西可以锁定这个 block 。但是,当我在引用数据后调用 GlobalFree() 时(所有内部数据仍与原来相同),程序停止并表示在 GlobalFree() 代码中遇到了用户断点。
有什么想法可能会导致这种情况吗?
最佳答案
当堆函数检测到堆结构已损坏时,它们通常会调用 DebugBreak() - 它实现用户断点。
这意味着您已经写入了分配区域的末尾(或开头)。
关于winapi - GlobalFree() 导致用户断点...内存块是固定的,未锁定,单个模块,无 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4426776/