为什么会有这么多错误“AccessViolationException”?

时间:2009-09-26 05:32:46

标签: exception access-violation

我在计算机使用寿命期间看到了很多错误,其中很多似乎都是访问冲突异常调用非可读内存或0x00000000 / 0xFFFFFFFF。

什么样的编程错误导致这种情况?当出现问题时,是否有意让程序崩溃?

2 个答案:

答案 0 :(得分:3)

取消引用空指针(一种非常常见的错误)可能会导致某些语言出现这种情况。

答案 1 :(得分:3)

绝对不是“当事情出错时故意让程序崩溃” - 他们只是将它们的语言称为exit(error_code),因为它......你不想随意跳转到内存中的某个位置导致它会崩溃。

基本上,这意味着程序正在尝试读取操作系统允许范围之外的内存位置。

这需要语言中的某种指针概念,并且指针中的内存地址被设置为错误值。这可能是由于忘记将指针的值设置为它指向的int的地址,而是将其设置为int保持的。这可能是因为数据/输入处理不好 - 你创建了一个可以容纳256个字节的数组 - 然后读入265个 - 而且只是指针值出现在数组之后的内存位置,所以现在的数据是'溢出'数组的末尾位于指针所在的内存位置 - 所以下次访问该指针时 - 它充满了一些随机数据,但它被视为内存地址。 (有目的地将其破解称为“缓冲区溢出攻击”)。