问题标签 [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 回答
2505 浏览

c++ - 从 Delphi 应用程序调用外部函数 (C++) 时访问冲突

我有一个用 C++ 编写的外部 DLL。下面的部分声明了一个结构类型和一个函数,给它一个指针,填充这个类型的变量:

我在我的Delphi应用程序中声明了一个类似的类型并调用上述函数:

调用该函数时,我收到调试器异常通知:

项目 ... 引发异常类 EAccessViolation,并带有消息“模块“Scraper.dll”中地址 10103F68 的访问冲突。读取地址 FFFFFFFC'。进程停止。

从同一个 DLL 导出的其他函数工作正常,所以我猜我在类型声明中犯了一个错误。任何提示都将受到高度赞赏,因为我在这一点上已经陷入困境。

0 投票
3 回答
635 浏览

c# - 将函数从 Visual Basic 6.0 转换为 C# 会引发 AccessViolationException

我将Visual Basic 6.0中的函数转换为:

在 C# 中,我将函数声明为:

当从 C# 调用 RequestOperation 时,它会抛出一个异常:

[System.AccessViolationException] = {"试图读取或写入受保护的内存。这通常表明其他内存已损坏。"}

我已经成功地调用了许多其他这样的函数,但只有这个函数抛出了异常。

0 投票
6 回答
366 浏览

java - 我可以在崩溃的 OS API 周围放置 try/catch 吗?

我使用 Windows 操作系统库来操作图像文件。有时它会在没有明显原因的情况下在内部深处崩溃——所有输入都是合理的,而不是线程问题。崩溃是内存 A/V。

那么,这样的事情有什么缺点:

这甚至会起作用吗?我们不会在代码的其他任何地方使用异常。

0 投票
1 回答
319 浏览

.net - Vista启动时访问冲突

当我的 .NET 应用程序在 Windows Vista 启动时(使用“启动”文件夹中的快捷方式)自动启动时,我偶尔会遇到奇怪的未处理访问冲突。当我手动启动可执行文件时,我没有看到这个错误。它是随机发生的,我还没有能够可靠地重现这个问题。

这是我收到的信息:

{executable name}.exe 中 0x6f303dea 处未处理的异常:0xC0000005:访问冲突读取位置 0x0000000c。

调用堆栈:

mscorwks.dll!6f303dea()
[下面的帧可能不正确和/或丢失,没有为 mscorwks.dll 加载符号]
kernel32.dll!7780907a()
mscoree.dll!6ff47c24()
kernel32.dll!7780d0e9()
ntdll.dll !778e19bb()
ntdll.dll!778e198e()

由于 mscorwks.dll 与 CLR 有关,我认为这可能是 CLR 中的错​​误。关于为什么会发生这种情况以及如何解决它的任何想法?

0 投票
2 回答
1236 浏览

c++ - 基类虚拟析构函数访问冲突

抱歉,如果已经问过这个问题,但我很难搜索析构函数和访问冲突 =)

这是场景的 C++ 伪代码:


在 DLL1 中(使用 /MT 编译)


在链接到 DLL1 的 DLL2 中

到底是怎么回事?我是不是脑子有问题?如果我将 A 的析构函数设为非虚拟的,那么一切正常——甚至 A 和 B 的析构函数也被调用(好像 A 的析构函数是虚拟的——这是因为它是公共的吗?)。

不过,我的主要问题是 - 为什么当基类的析构函数被声明为虚拟时会出现访问冲突?

0 投票
3 回答
4348 浏览

c++builder - C++ Builder 6 中的疯狂访问冲突

我有以下代码,对于我的生活,我无法理解为什么会出现访问冲突异常?我什至删除了所有的 OBJ、TDS 等文件并将其放入一个新项目中,仍然发生访问冲突。

本质上,此代码在 TFrame 中显示 TListView,并显示世界各地不同时区的各种当前时间。

注意:代码在 C++ Builder 6 中。

有人可以帮忙吗?

血腥地狱更新:已解决。我不应该在 TFrame 构造函数中向 TListView 添加项目。哑巴哑巴。

重大更新:似乎当通过计时器调用 UpdateTimes() 时,“li->Deleting”属性为 TRUE。当在定时器外调用时,它是 FALSE。现在为什么将“li->Deleting”设置为“true”,因为它是从计时器调用的?如果我做:

它没有进入 if(),当从计时器调用 UpdateTimes() 时...... arggggh !!!

更新:似乎如果我在 TTimer 之外调用 UpdateTimes(),它工作正常。但是当从计时器调用时,它会引发访问冲突。是什么赋予了?

头文件:

CPP 文件:

更新演示该列表的示例代码将项目作为副本,而不是参考。(据我所知,如果我在下面的代码中犯了一些错误,请纠正我)

@克雷格杨:

我很困惑...我认为结构会作为副本而不是参考添加到列表中?请看下面的代码,好像是在复制?还是我错过了一些基本的东西?还是下面的编码错误?

0 投票
2 回答
4272 浏览

c++ - 将文件中的文本加载到二维数组中(C++)

我正在制作一个游戏,并将地图数据存储在一个大小为 [34][10] 的二维数组中。最初,我使用一个简单的函数来填充数组并使用以下代码将此数据保存到文件中来生成地图:

这会输出一个看起来像我想要的文本文件。但是,当我尝试使用以下代码重新读取它时,我会遇到大量访问冲突,并且它会在运行时崩溃:

有谁知道问题是什么?

0 投票
8 回答
1746 浏览

delphi - Delphi:为什么我可以静态链接这个函数而不是动态链接?

我目前正在编写一个模块,该模块与用于检查扫描仪的黑盒第 3 方 DLL 接口。我需要动态加载 DLL 函数,这适用于除一个函数之外的所有函数。
SetScanParameters 函数有一个记录结构作为参数,我认为它在某种程度上干扰了我用来动态加载它的方法(见下文)。动态加载时,函数会因访问冲突而中断。
但是,SetScanParameters 在静态加载时确实加载并正常运行。我还需要做些什么来动态加载具有记录结构的函数吗?

为清楚起见,自行编辑:

记录类型:

静态声明:

静态实现:

动态逻辑(或者如果我不必使用静态调用来使其工作,那将是什么动态逻辑):

我已经尝试在动态上使用 stdcall、cdecl、safecall、pascal 和 register,它们都导致了 AV。我还尝试在结构 [1..15] 而不是 [0..14] 中创建数组。但我没有得到的是,如果我将结构传递给静态版本,它就可以工作。

此外,OP中有一些错别字,对此我深表歉意。我正在重写 OP 中的代码并做了一些拼写错误,这可能会使线程有点混乱。我已经用当前测试功能的复制/粘贴替换了它。

编辑:下面是 DLL 文档中描述的 typedef:

0 投票
1 回答
1951 浏览

marshalling - 如何将位图转换为 int[]?

我正在编写一个程序来在 GPU 上进行一些图像处理。为此,我使用的是 CUDA.Net,但不幸的是,CUDA 无法识别类型byte,我可以使用以下代码在其中存储像素信息:

我的问题在于 CUDA 不采用此字节数组,如果将其更改为int[]类型,程序将检索 AccessViolationException。

有人有解决这个问题的想法吗?

提前致谢。

0 投票
2 回答
639 浏览

windows-7 - 尝试在 Windows 7 上使用 tcl 线程会导致访问冲突

我试图让这个简单的程序在 Windows 上运行,但它崩溃了:

我正在使用由 cmake 生成的 makefile 并链接到我使用 Visual C++ 2008 express 自己编译的 Tcl 8.5.7 版本。它是使用 msvcrt,static,threads 编译的,生成的库的名称是 tcl85tsx.lib。错误是:

Tcl 库工作正常,我什至可以通过将 Thread 扩展加载到其中来运行线程脚本示例。我的假设是内存违规存在严重错误,但我不知道是什么。任何帮助表示赞赏。