0x77A26B83 (ntdll.dll) 处有未经处理的异常: 0xC0000374: 堆已损坏。

问题:
在这里插入图片描述
Person类使用不了!!!

找啊找啊找啊找!

最终
发现同一个工程下有一个同名的Person结构体,罪魁祸首!!!

在这里插入图片描述
解决:把day4.cpp从工程项目中移除即可!!!

**

总结:一个工程下,类名、函数名使用要注意,不能重名,就算没有引用也有可能会报错!!!

**

C:\Users\Lenono3>drmemory -- E:\Code\testMicroCalc\testZoomCalc\x64\Debug\testZoomCalc.exe <Application E:\Code\testMicroCalc\testZoomCalc\x64\Debug\testZoomCalc.exe (31456). Dr. Memory internal crash at PC 0x00007ff77a72f152. Please report this at http://drmemory.org/issues along with the results of running '-debug -dr_debug'. Program aborted. 0xc0000005 0x00000000 0x00007ff77a72f152 0x00007ff77a72f152 0x0000000000000001 0x0000000000000000 Base: 0x0000000071000000 Registers: eax=0x0000000000000000 ebx=0x0000000000000000 ecx=0x00000179ea9a4400 edx=0x00007ff909430057 esi=0x0000000000000000 edi=0x0000000000000000 esp=0x00000179ea9c17e0 ebp=0x0000000000000000 r8 =0x00000179ea9c58b0 r9 =0x0000000000000000 r10=0x00000179ea9a4a58 r11=0x00007ff77a716c13 r12=0x00000179ea9c58b0 r13=0x00000179ea9a4400 r14=0x00000179ea9c1960 r15=0x00000179ea9c58b0 eflags=0x0000000000010246 2.6.20133-0-(Feb 15 2025 02:53:31) WinVer=105;Rel=2009;Build=26100;Edition=CoreCountrySpecific -no_dynamic_options -logdir 'E:\LenovoSoftstore\Install\Dr. Memory\drmemory\logs\dynamorio' -client_lib 'E:\LenovoSoftstore\Install\Dr. Memory\bin64\release\drmemorylib.dll;0;-logdir `E:\LenovoSoftstore\Install\Dr. Memory\drmemory\logs` -symcache_dir `E:\LenovoSoftstore\Install\Dr. Memory\drmemory\logs\symcache` -lib_blo E:\LenovoSoftstore\Install\Dr. Memory\dynamorio\lib64\release\dynamorio.dll=0x0000000071000000 C:\WINDOWS/system32/RPCRT4.dll=0x00000179805f0000 E:\LenovoSoftstore\Install\Dr. Memory\bin64\release\drmemorylib.dll=0x00007ff77a6b0000 E:\LenovoSoftstore\Install\Dr. Memory\bin64\release/dbghelp.dll=0x00007ff77a970000 C:\WINDOWS/system32/ucrtbase.dll=0x0000017980000000 C:\WINDOWS/system32/kernel32.dll=0x0000017980150000 C:\WINDOWS/system32/KERNELBASE>
最新发布
03-08
<think>好的,我现在需要帮助用户分析他们遇到的Dr. Memory内部崩溃问题。首先,用户提供的错误信息显示,当运行测试程序testZoomCalc.exe时,Dr. Memory发生了内部崩溃,错误代码是0xc0000005,这通常表示访问冲突或内存错误。用户可能希望了解这个问题的原因以及如何解决它。 首先,我需要理解错误信息中的关键部分。错误发生在地址0x00007ff77a72f152,这可能是程序或某个DLL中的指令指针。用户还被提示报告这个问题,并提供了一些调试参数的结果。接下来,我需要考虑可能的原因。 可能的原因包括:Dr. Memory本身的bug,测试程序中的内存错误导致Dr. Memory崩溃,或者系统环境兼容性问题。例如,程序可能存在内存越界访问,而Dr. Memory在检测时自身崩溃。另外,用户的操作系统版本和Dr. Memory的兼容性也需要检查,特别是Windows的更新可能导致兼容性问题。 接下来,我应该分步骤建议用户进行排查。首先,确保Dr. Memory是最新版本,因为旧版本可能存在已知问题。其次,尝试使用其他内存检测工具如Valgrind(如果可用)或AddressSanitizer来确认问题是否特定于Dr. Memory。如果其他工具也报错,说明程序本身有问题,需要检查代码的内存管理。 如果问题仅出现在Dr. Memory,可能需要简化测试用例,逐步排除代码中的复杂部分,以确定触发崩溃的具体操作。同时,查看Dr. Memory的日志和符号缓存可能提供更多线索。用户还可以尝试使用提供的调试参数重新运行,收集更详细的信息以便报告给开发团队。 另外,检查系统更新和依赖库的版本也很重要,确保所有组件都是兼容的。如果用户的环境有特殊的配置或安全软件,可能会干扰Dr. Memory的正常运行,暂时禁用这些可能有助于诊断。 最后,如果所有步骤都无法解决问题,建议用户按照提示向Dr. Memory的官方提交问题报告,附上详细的日志和调试信息,以便开发者进一步分析和修复。</think>从您提供的Dr. Memory报错信息来看,这是一个内存调试工具自身发生的内部崩溃(Internal Crash)。以下是关键信息分析和排查建议: **核心问题分析:** 1. 错误类型:`0xc0000005`表示访问违规(Access Violation),通常由野指针、内存越界等引起 2. 崩溃位置:`PC 0x00007ff77a72f152`指向Dr. Memory自身的drmemorylib.dll模块 3. 环境信息:Windows 10 2009(Build 26100),Dr. Memory版本2.6.20133 **可能原因:** - Dr. Memory与特定程序行为不兼容 - 被检测程序存在严重内存损坏(如溢出),导致调试器崩溃 - 系统环境问题(如第三方安全软件干扰) - Dr. Memory本身存在bug **排查步骤建议:** 1. **验证基础环境** ```bash # 先运行简单程序验证Dr. Memory基本功能 drmemory -- notepad.exe ``` 2. **简化测试用例** ```cpp // 创建一个最小复现代码(示例) int main() { int* ptr = new int[5]; delete[] ptr; ptr[2] = 10; // 故意制造野指针访问 return 0; } ``` 3. **尝试替代工具** ```bash # 使用Windows原生工具验证 g++ -fsanitize=address -g test.cpp && test.exe ``` 4. **升级调试工具**   检查是否有新版本Dr. Memory可用(官网最新为2.7.1) 5. **查看详细日志** ```bash drmemory -debug -dr_debug -- your_program.exe ``` **关键日志参数说明:** - `-debug`:启用调试输出 - `-dr_debug`:启用DynamoRIO调试模式 - `-logdir` 指定日志目录 **技术细节观察:** - 寄存器状态显示`rsp=0x00000179ea9c17e0`,栈指针于低位,可能发生栈溢出 - `drmemorylib.dll`基地址`0x00007ff77a6b0000`与崩溃地址`0x00007ff77a72f152`相差约0.7MB,位于同一模块内 建议将完整日志提交至Dr. Memory的[官方issue跟踪系统](https://github.com/DynamoRIO/drmemory/issues),开发团队通常会在1-2个工作日内响应。如果项目紧急,可暂时改用[Visual Studio内存诊断工具](https://learn.microsoft.com/en-us/visualstudio/debugger/finding-memory-leaks-using-the-crt-library)进行替代分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值