我们有一个大型Ada / C ++系统(使用Gnatpro 7.3.2)在Windows上运行,很少会因0xC0000005 Windows内存冲突而严重崩溃。我试图通过创建一个小的Ada程序来简化该程序,该程序调用C ++库,并且该库尝试写入地址0x07。但是在这种情况下,Ada子系统没有获得预期的C0000005,而是报告了PROGRAM ERROR消息EXCEPTION_ACCESS_VIOLATION和良好的堆栈跟踪。
必须找到这个罕见的错误,所以我首先编写了一个C ++程序,写入地址7,这引起了预期的C000005,但这使用了MSVC运行时。我的小型Ada程序显示了不同的行为。是否可以禁用捕获内存冲突的Ada运行时层?