我已经开始看到一个AccessViolationException在我的应用程序中被抛出几个不同的地方。 它从来没有发生在我的开发电脑,我们的testing服务器上。 它也仅在我们的两台生产服务器中的一台显示。 因为它似乎只发生在我们的一台生产服务器上,所以我开始在服务器上查看已安装的.net框架版本。 我发现(出于某种奇怪的原因),有问题的生产服务器有2.0 sp2,3.0 sp2和3.5 sp1,而另一台生产服务器和testing服务器有2.0 sp1。 我的应用程序只针对2.0框架,决定从生产服务器上卸载所有的框架版本,只安装2.0 sp1。 到目前为止,我还没有能够重现这个问题。 很有意思。 开发PC:compact 2.0 sp2,compact 3.5,2.0 sp2,3.0 sp2,3.5 sp1testing服务器:2.0 sp1生产服务器1:2.0 sp1生产服务器2:2.0 sp2,3.0 sp2,3.5 sp1 现在,为什么我不能重现我的开发电脑上有2.0 SP2的问题,我不明白。 我听说有传言说这种访问违规可能发生在某些使用远程处理的软件上,而远程处理实际发生时访问违规从未发生过。 我现在只用2.0 sp1就可以了,但是我真的很想知道是否有人遇到过这个问题,以及他们是否find了更新版本的frameowork的解决方法。 这里有一些例外和他们的堆栈跟踪: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. at ICSharpCode.TextEditor.TextArea.HandleKeyPress(Char ch) at ICSharpCode.TextEditor.TextArea.SimulateKeyPress(Char ch) […]
我在这里看到了许多关于在C程序中获得分段错误的问题,我认为在这里有一个引用这些是很好的问题,在某些情况下会导致分段错误。 我的答案是张贴在下面。 正如在一些答案中所写的那样,所有情况下的行为都是不确定的,尽pipe很多人将它们视为分段错误 ,所以这个问题是关于什么导致这个“症状”的。 在下面的情况下,我运行程序时出现分段错误,您能确定原因吗? 1) char *str = "foo"; str[0] = 'b'; // << Segfault hre 2) char str[] = "foo"; char *newStr = malloc(strlen(str)); strcpy(newStr, str); free(newStr); // << Segfault here 3) char *str = malloc(4 * sizeof(char)); str = "foo"; free(str); // << Segfault here 4) char *str = malloc(4 * sizeof(char)); […]