我有一个HeapReAlloc()失败,错误为ACCESS_VIOLATION,但我不确定如何使用GetExceptionCode()实现进一步的检查,因为它使用了try/catch或异常等-有人能给予我一个例子,说明我如何使用它来缩小这个失败的范围吗?
HeapReAlloc()
ACCESS_VIOLATION
GetExceptionCode()
ezykj2lf1#
您正在排 debugging 误的问题。HeapRealloc()爆炸,因为堆已损坏。不久前发生了这种情况,程序中的某个语句溢出了堆块,将数据写入已释放的内存,诸如此类。MSVC有一个调试内存分配器可以帮助您排除此类问题,请在MSDN Library中查找<crtdbg.h>。
<crtdbg.h>
1cosmwyk2#
请确保HeapReAlloc的hHeap和lpMem参数有效。您应该考虑以下可能的根本原因。
HeapReAlloc
hHeap
lpMem
dwFlags
HeapCreate
GetProcessHeap
除了HeapValidate(hHeap, 0, lpMem)之外,还应该通过调用
HeapValidate(hHeap, 0, lpMem)
HeapValidate(hHeap, 0, NULL)
2条答案
按热度按时间ezykj2lf1#
您正在排 debugging 误的问题。HeapRealloc()爆炸,因为堆已损坏。不久前发生了这种情况,程序中的某个语句溢出了堆块,将数据写入已释放的内存,诸如此类。MSVC有一个调试内存分配器可以帮助您排除此类问题,请在MSDN Library中查找
<crtdbg.h>
。1cosmwyk2#
请确保
HeapReAlloc
的hHeap
和lpMem
参数有效。您应该考虑以下可能的根本原因。dwFlags
传递的值是什么。hHeap
。HeapCreate
GetProcessHeap
HeapCreate
/GetProcessHeap
提供了哪些参数。除了
HeapValidate(hHeap, 0, lpMem)
之外,还应该通过调用