目录
1.现象
在 Windows 10 下用 VS2019 编译的 C++ Release 版程序,在 Windows 7 上运行时触发 0xC0000005(访问违例)错误,且程序甚至无法进入 main 函数执行。这是典型的编译配置与 Win7 系统不兼容导致的启动阶段崩溃,而非代码逻辑问题。
2.原因分析
0xC0000005 且进不了 main 函数,说明程序在加载 / 初始化阶段就崩溃了,主要诱因有 3 个:
- VS2019 默认工具集 / 目标系统版本是 Win10,未适配 Win7;
- 动态链接的 VC++ 运行时库在 Win7 上缺失 / 版本不兼容;
- 编译时启用了 Win7 老 CPU 不支持的高级指令集(如 AVX2)。
最后才找到问题的关键所在,有一个动态库,用于检测内存泄露的库,release版本在win7上不兼容的原因;这个问题困扰了两天多,一直没有找到根本原因,同时也是一个很大的坑;同时也在这里好好的记录下。