这两天碰到一个调试问题,程序运行的过程中会弹出窗口,显示如下内容:
XX.exe 中的 0x7855ae92 (msvcr90.dll) 处未处理的异常: 0xC0000005: 读取位置 0x005ab000 时发生访问冲突
描述一下问题:
通过字符串加载文件的过程中会弹出此框,初步确定是对字符串的处理,包括内存分配有问题导致的.
说明一下,XX.exe程序我正在维护的程序,分为Debug,Release,ReleaseU三种版本,其中ReleaseU版本表示带调试信息的发布版本,Debug,Release版本都没有问题,只有ReleaseU版本有问题,经过多次调试和查证,最终确定了是因为ReleaseU版本的工程属性配置有错导致的问题.因为选错了运行时库,所以内存分配不一致.导致异常.
解决办法:
右键打开ReleaseU工程属性,->配置属性->c/c++->代码生成->运行库,将"多线程调试 DLL (/MDd)"改为"多线程 DLL (/MD)"
保存,重新编译.OK