我在Visual Studio中编写,一个C程序,我收到此错误:SciComput.exe中0x77dd3e14处的未处理异常:0xC0000005:访问冲突读取位置0xff630018。
有人可以向绝对的初学者解释这是什么意思吗?
答案 0 :(得分:4)
除了Eutherpy的好答案之外,我还要补充说,访问冲突通常是尝试读取或写入NULL,即位置零。位置0xff630018肯定是出界的,但绝对不是零;这里发生了一些奇怪的事情。
Windows为您的流程的“用户”一半保留了底部2GB的虚拟地址空间 - 也就是说,您的代码实际上正在运行。最高2GB,其地址从0x80000000到0xffffffff保留供操作系统用于存储与您的进程关联的数据。从用户代码访问操作系统拥有的内存的任何尝试都将立即导致访问冲突。但为什么你的程序首先尝试访问操作系统内存?
就像我说的,这里发生了一些奇怪的事情。可能会出现一些其他内存损坏,然后在此行为中出现;这可能是一些完全不同的错误的症状。
这些很难追查。祝你好运!
答案 1 :(得分:3)
这意味着您正在尝试访问不属于"属于"你的程序,即你没有分配,保留的记忆。
通常,导致此类错误的原因是写入只读内存或取消引用NULL指针。
"未处理的例外"意味着您还没有为程序提供一种方法来处理错误,因此它只会崩溃。
注意:您可以通过C ++中的 try ... catch 机制处理异常。但是,http://msdn.microsoft.com/en-us/library/6dekhbbc.aspx C并不支持这一点。