Windows C++程序中的访问冲突是否总是立即崩溃

Would an access violation in a Windows C++ program crash immediately always?

本文关键字:崩溃 是否 访问冲突 C++ 程序 Windows      更新时间:2023-10-16

我一直明白,如果您在任何平台的C++程序(或其他任何程序(中执行访问违规,违规程序将立即崩溃。有人告诉我,在Windows中并不总是如此。是吗?还是会像我想象的那样总是立即崩溃?

我不知道

任何处理器的访问冲突会导致强制崩溃。

访问冲突始终是错误(而不是陷阱(。操作系统可以允许进程设置异常处理程序(从中断向量调用(,以允许更正错误。

不,如果是这样,对手对缓冲区溢出所能做的最糟糕的事情就是拒绝服务。

对于一个具体的例子,一个不正确的Windows版本是Windows 95,其内存模型被昵称为危险内存模型。 该平台上的所有 Win32 程序都获得相同的选择器,其中为 DOS、32 位程序、16 位程序以及内核和驱动程序保留内存空间区域,并且只有访问内存的下半部分(NULL 指针引用(才会实际使程序崩溃。