问题标签 [access-violation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1425 浏览

memory - 访问程序分配的内存之外。(访问其他应用程序的内存)

有没有办法访问(读取或释放)分配给程序的内存之外的内存块,而不会出现访问冲突异常。好吧,除此之外,我真正想了解的是内存清理器(系统垃圾收集器)是如何工作的。我一直想写这样一个程序。(语言不是问题)

提前致谢 :)

0 投票
2 回答
1426 浏览

c++ - 编写动态二维数组时访问冲突...有时

该程序旨在生成一个动态数组,但是在给定特定维度时写入时会出现访问冲突错误。例如:R = 6, C = 5 崩溃,但是 R = 5, C = 6 不会。如果您想知道,“修复”这个损坏的程序不是我的作业,这是我们在课堂上学到的方法。我的评估的一部分也是使用这种方法,所以向量已经出来了。提前致谢!

0 投票
4 回答
1041 浏览

c - C toLowerCase 函数不起作用 - 访问冲突

我有一个简单的函数,它将一个字符数组作为参数,并将所有字符转换为小写。但是,我收到一个奇怪的访问冲突错误。这是代码:

你能告诉我我的错误是什么吗?谢谢

0 投票
1 回答
1615 浏览

access-violation - 运行使用 /clr 构建的 DLL 的本机 C++ 应用程序时访问冲突

我正在重新组织一个旧的混合(托管和非托管 DLL)应用程序,以便主应用程序段是非托管 MFC,它将调用使用 /clr 标志编译的 C++ DLL,该标志将桥接托管(C# DLL)和非托管代码之间的通信. 不幸的是,我的更改导致在调用应用程序 InitInstance() 之前发生访问冲突。这使得调试非常困难。我得到的唯一信息是以下堆栈跟踪。

所以,这里有一些我试过的场景。
- 打开 Exceptions->Win32 Exceptions->c0000005 Access Violation 以在抛出时中断。我得到的最详细信息仍然来自上面的堆栈跟踪。我已经使用 F10 尝试了该应用程序,但它在任何断点被命中之前失败,并且由于上述堆栈跟踪而失败。

- 我已经删除了桥接 DLL,因此它只有一个返回布尔值的方法,并且该方法被编码为只返回 false(不调用 C# 代码)。

如果使用 /clr 标志编译已存根的 DLL,则应用程序将失败。如果编译时没有 /clr 标志,则应用程序运行。

- 我使用 Visual Studio 向导为多文档应用程序创建了一个存根 MFC 应用程序,并调用 DllPassthrough::IsFailed()。即使使用用于编译 DLL 的 /clr 标志,这也会成功。

- 我已经尝试在 winmm.lib 上执行手动 LoadLibrary,如下面的注释Access violation when using c++/cli中所述。应用程序仍然失败。

所以,我的问题是如何解决这个问题?任何提示、策略或以前的事件。而且,如果做不到这一点,我如何才能获得有关导致访问异常的代码段或库的更多信息?如果我尝试更多涉及的解决方法,例如进行 LoadLibrary 调用,我想将其缩小到失败的库。

谢谢。顺便说一句,我们使用的是 Visual Studio 2008,并且该项目是针对托管部分的 .NET 2.0 框架构建的。

0 投票
4 回答
8586 浏览

c++ - 为什么 CoUninitialize 在退出时会导致错误?

我正在开发一个 C++ 应用程序来从 Excel 文件中读取一些数据。我已经让它工作了,但我对一个部分感到困惑。这是代码(简化为仅读取第一个单元格)。

我必须注释掉对 CoUninitialize 的调用才能使程序正常工作。当取消注释 CoUninitialize 时,我在程序退出时的 comip.h 中的 _Release 函数中遇到访问冲突。

这是来自 comip.h 的代码,值得一看。

我对 COM 编程不是很有经验,所以我可能缺少一些明显的东西。

  1. 为什么调用 CoUninitialize 会导致异常?

  2. 不调用 CoUninitialize 的后果是什么?

  3. 我在这里做错了什么吗?

0 投票
2 回答
3574 浏览

c# - 如何调试非确定性访问冲突崩溃?

我们的 C#/COM/C++ 应用程序崩溃了,我需要帮助调试它。在启用 gflags 并附加 WinDbg 的情况下运行,我们确定崩溃是由访问冲突引起的,但我们无法缩小范围。我们没有在所有机器上都看到这个问题;有几台机器似乎经常重现该问题,但不是确定性的。我们观察到应用程序崩溃是从简单地从应用程序(例如 Alt-Tab)切换到然后返回。WinDbg 的输出如下。

我们一直在尝试系统地注释掉可能导致问题的代码区域,但我们还没有取得太大的成功。

关于我们应该尝试哪些调试步骤或工具的任何建议?

!分析-v

EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff) ExceptionAddress: 1a584ff2 (+0x1a584ff1)
ExceptionCode: c0000005 (访问冲突) ExceptionFlags: 00000000 NumberParameters: 2 Parameter[0]: 00000000 Parameter[1]: 1a584ff2 Attempta 从地址读取

PROCESS_NAME:ProcessFiles.exe

ERROR_CODE: (NTSTATUS) 0xc0000005 - 0x%08lx 处的指令引用了 0x%08lx 处的内存。内存不能是 %s。

EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - 0x%08lx 处的指令引用了 0x%08lx 处的内存。内存不能是 %s。

EXCEPTION_PARAMETER1:00000000

EXCEPTION_PARAMETER2:1a584ff2

READ_ADDRESS:1a584ff2

FOLLOWUP_IP: Ed20+1a584ff1 1a584ff2 ?? ???

NTGLOBALFLAG:2000000

APPLICATION_VERIFIER_FLAGS:0

IP_MODULE_UNLOADED: Ed20+1a584ff1 1a584ff2 ?? ???

MANAGED_STACK: (TransitionMU) 0EC6F6F4 7B1D8CCE System_Windows_Forms_ni!System.Windows.Forms.Application+ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32, Int32, Int32)+0x24e 0EC6F790 7B1D8937 System_Windows_Forms_ni!System.Windows.Forms +ThreadContext.RunMessageLoopInner(Int32, System.Windows.Forms.ApplicationContext)+0x177 0EC6F7E4 7B1D8781 System_Windows_Forms_ni!System.Windows.Forms.Application+ThreadContext.RunMessageLoop(Int32, System.Windows.Forms.ApplicationContext)+0x61 0EC6F814 7B195911 System_Windows_Forms_ni!System .Windows.Forms.Application.Run(System.Windows.Forms.Form)+0x31 0EC6F828 0969D97A Extract_Utilities_Forms!Extract.Utilities.Forms.VerificationForm`1[[System.__Canon, mscorlib]].A(System.Object)+0x23a 0EC6F8C0 79A00EEE mscorlib_ni!System.Threading.ThreadHelper.ThreadStart_Context(System.Object)+0x72a25e 0EC6F8CC 792E019F mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)+0x6f 0EC6F8E4 797DB48A mscorlib_ni!System。 Threading.ThreadHelper.ThreadStart(System.Object)+0x4a (TransitionUM)

LAST_CONTROL_TRANSFER:从 7e418734 到 1a584ff2

FAULTING_THREAD: ffffffff

ADDITIONAL_DEBUG_TEXT:基于属性 [ip_not_executable] 的后续集来自 Frame:[0] on thread:[e30]

BUGCHECK_STR:APPLICATION_FAULT_BAD_INSTRUCTION_PTR_INVALID_POINTER_READ_WRONG_SYMBOLS_WINDOW_HOOK

PRIMARY_PROBLEM_CLASS:BAD_INSTRUCTION_PTR

DEFAULT_BUCKET_ID:BAD_INSTRUCTION_PTR

STACK_TEXT: 7b1d8cce System_Windows_Forms_ni!System.Windows.Forms.Application+ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop+0xc 7b1d8937 System_Windows_Forms_ni!System.Windows.Forms.Application+ThreadContext.RunMessageLoopInner+0x0 7b1d8781 System_Windows_Forms_ni!System.Windows .Forms.Application+ThreadContext.RunMessageLoop+0x0 7b195911 System_Windows_Forms_ni!System.Windows.Forms.Application.Run+0x31 0969d97a Extract_Utilities_Forms!Extract.Utilities.Forms.VerificationForm`1[[System.__Canon, mscorlib]].A+0x23a 79a00eee mscorlib_ni!System.Threading.ThreadHelper.ThreadStart_Context+0x72a25e 792e019f mscorlib_ni!System.Threading.ExecutionContext.Run+0x6f 797db48a mscorlib_ni!System.Threading.ThreadHelper.ThreadStart+0x4a

堆栈命令:.ecxr;~~[e30] ; .frame 0 ; ** 伪上下文 ** ; KB

FAILED_INSTRUCTION_ADDRESS: Ed20+1a584ff1 1a584ff2 ??
???

SYMBOL_NAME:Ed20

FOLLOWUP_NAME:机器所有者

模块名称:Ed20

IMAGE_NAME:Ed20

DEBUG_FLR_IMAGE_TIMESTAMP:0

FAILURE_BUCKET_ID:BAD_INSTRUCTION_PTR_c0000005_Ed20!卸载

BUCKET_ID:APPLICATION_FAULT_BAD_INSTRUCTION_PTR_INVALID_POINTER_READ_WRONG_SYMBOLS_WINDOW_HOOK_BAD_IP_Ed20

跟进:MachineOwner

0 投票
1 回答
718 浏览

.net - 当我访问 ADODB 字段的值时导致 System.AccessViolationException 的原因是什么?

我正在从 .Net Web 服务(都在 Windows XP 机器上)连接到 PostgreSQL 数据库。最近有几次,在几台不同的计算机上,我们收到了System.AccessViolationException错误。

我能够获得的一个堆栈跟踪表明它是在我获取 ADODB.recordset 并获取字段的值时发生的。例如

这并不总是失败;它很少失败。我们在其中一台计算机上运行 memtest,没有发现任何问题。

问题可能是什么?如果是司机,我有什么选择?

0 投票
1 回答
640 浏览

visual-studio - Visual Studio 之外的 AccessViolationException?

我正在开发一个使用非托管 C++ 库的小型 C# winforms 应用程序。我无权访问该库的代码。

如果我在 Visual Studio 中并且运行我的应用程序,请调用库,一切正常。一旦我运行 CTRL + F5 我得到一个 AccessViolationException。我做了一些测试,在 .NET 2.0 中创建了另一个 winforms 应用程序(其他的在 .NET 4.0 中),但我没有收到 AccessViolationException。所以我想我会在我的 .net 4.0 解决方案中创建一个 .net 2.0 类库并使用该类库。这没有帮助,我仍然有 AccessViolationException。

尝试设置允许不安全的代码,打开和关闭优化代码,但这没有帮助。为什么退出调试模式后会出现 AccessViolationException?

谢谢

0 投票
2 回答
953 浏览

c++ - 指针对象成员的访问冲突

所以我正在编写这个客户端/服务器程序。此代码来自客户端。客户端有一个对象的实例

我将它作为指针的原因是,mpqs_sieve 只有一个带有 3 个参数的构造函数,我想在稍后的时间点实例化它。

客户端首先从服务器获取一些数据,并使用它来实例化 instance_。在此之后,它将请求更多数据,并且在接收到这些数据后(这是二次多项式的三个系数),它应该在 instance_ 对象中设置这些数据。但是,在调用 instance_ 的成员函数时,我在该函数调用中遇到了 instance_ 成员之一的访问冲突。

我在这里发布了我的代码:在 pastebin 上,我在第 100 行收到错误。调用来自第 71 行,在第 21 行之前。这是摘录:

有什么想法可以解决这个问题吗?

0 投票
5 回答
10952 浏览

delphi - Delphi访问冲突分配局部变量

这似乎是世界上最简单的事情,我准备把头发拉出来。

我有一个看起来像这样的单元;

这是一个简单的变量赋值,我不知道它为什么这样做。我已经尝试将变量声明为单元的局部变量、过程的全局变量——无论我在哪里尝试这样做,我都无法将零值赋给在此过程中任何地方声明的整数,而不会引发访问违反。我完全被难住了。

我从同一单元内的按钮 OnClick 处理程序内部调用该过程,但无论我从哪里调用它都会引发异常。疯狂的是,我在整个程序的其他十几个地方做同样的事情,没有任何问题。为什么在这里?我完全不知所措。