gpt4 book ai didi

visual-c++ - Visual C++ : Invalid allocation size. 如何强制调试器在此消息上停止?

转载 作者:行者123 更新时间:2023-12-04 06:45:50 26 4
gpt4 key购买 nike

我正在调试的 MFC 程序正在 Visual Studio 9.0 的“输出”窗口中打印此消息:

HEAP[AppName.exe]: Invalid allocation size - 99999998 (exceeded 7ffdefff)

我很确定这是由于错误的"new"、未初始化变量或类似错误造成的。

问题是:如何让调试器在此消息上停止,以便我可以查看堆栈跟踪并解决问题?


编辑:以下片段不会产生相同的警告。它们生成 Invalid allocation size: 4294967295 bytes. 样式消息。

int stupid = -1;
char *bob = new char[stupid];

和:

malloc(-1);

因此,我怀疑它来自具有自己的内存管理的系统 DLL 或正在使用不同的 API。

最佳答案

错误消息可能来自 ntdll.dll 中的 HeapAlloc()

我可以使用以下代码重现消息:

HANDLE hHeap = HeapCreate(0, 0, 4096);
LPVOID p = HeapAlloc(hHeap, 0, 0x99999998);

消息通过 ntdll.dll 中的 DbgPrint() 发送到调试器输出窗口,所以我会尝试在那里设置一个断点(它是一个导出函数,所以你不需要符号文件以查找其地址),然后查看您的调用堆栈。

关于visual-c++ - Visual C++ : Invalid allocation size. 如何强制调试器在此消息上停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2968968/

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