C++ ntdll.dll中的访问冲突是在VS2015发布模式下引起的

C++ ntdll.dll中的访问冲突是在VS2015发布模式下引起的,c++,visual-studio-2015,C++,Visual Studio 2015,当我在VS2015发布模式下运行程序时,它崩溃如下: 由以下异常引起的(位于GPURenderingApp.exe中)中的0x000000007743EF57(ntdll.dll):0xC0000005:写入位置0x0000000000000000访问冲突 但是我可以在VS2015调试模式下运行相同的程序,在VS2010调试和发布模式下运行相同的程序,为什么?您的程序有一个bug——您试图写入地址0。这就是那个错误告诉你的。你的程序有一个bug,VS2015优化器已经暴露了它。调试模式没有公开它

当我在VS2015发布模式下运行程序时,它崩溃如下:

由以下异常引起的(位于GPURenderingApp.exe中)中的0x000000007743EF57(ntdll.dll):0xC0000005:写入位置0x0000000000000000访问冲突


但是我可以在VS2015调试模式下运行相同的程序,在VS2010调试和发布模式下运行相同的程序,为什么?

您的程序有一个bug——您试图写入地址0。这就是那个错误告诉你的。你的程序有一个bug,VS2015优化器已经暴露了它。调试模式没有公开它,VS2010在优化方面也没有那么激进。您必须在调试器中单步执行,可能是在汇编模式下。我在发布模式下调试我的程序,它在文件e:\program Files(x86)\Microsoft Visual Studio 14.0\VC\include\xmemory0中出错。内联void _Deallocate(void*_Ptr,size_t_Count,size_t_Sz){…::operator delete(_Ptr);}语句中出现错误::operator delete(_Ptr)然后,在某个地方,在删除指向内存的指针时,您做错了什么。使用调用堆栈来计算您是如何在_Deallocate中结束的。您的程序有一个bug--您正在尝试写入地址0。这就是那个错误告诉你的。你的程序有一个bug,VS2015优化器已经暴露了它。调试模式没有公开它,VS2010在优化方面也没有那么激进。您必须在调试器中单步执行,可能是在汇编模式下。我在发布模式下调试我的程序,它在文件e:\program Files(x86)\Microsoft Visual Studio 14.0\VC\include\xmemory0中出错。内联void _Deallocate(void*_Ptr,size_t_Count,size_t_Sz){…::operator delete(_Ptr);}语句中出现错误::operator delete(_Ptr)然后,在某个地方,在删除指向内存的指针时,您做错了什么。使用调用堆栈来了解您是如何最终取消分配的。