c++ 使用GetExceptionCode()调试HeapReAlloc()失败

92vpleto  于 2022-11-27  发布在  其他
关注(0)|答案(2)|浏览(248)

我有一个HeapReAlloc()失败,错误为ACCESS_VIOLATION,但我不确定如何使用GetExceptionCode()实现进一步的检查,因为它使用了try/catch或异常等-有人能给予我一个例子,说明我如何使用它来缩小这个失败的范围吗?

ezykj2lf

ezykj2lf1#

您正在排 debugging 误的问题。HeapRealloc()爆炸,因为堆已损坏。不久前发生了这种情况,程序中的某个语句溢出了堆块,将数据写入已释放的内存,诸如此类。MSVC有一个调试内存分配器可以帮助您排除此类问题,请在MSDN Library中查找<crtdbg.h>

1cosmwyk

1cosmwyk2#

请确保HeapReAllochHeaplpMem参数有效。您应该考虑以下可能的根本原因。

  • dwFlags传递的值是什么。
  • 如何获得hHeap
  • 通过HeapCreate
  • GetProcessHeap
  • HeapCreate/GetProcessHeap提供了哪些参数。

除了HeapValidate(hHeap, 0, lpMem)之外,还应该通过调用

HeapValidate(hHeap, 0, NULL)

相关问题