问题标签 [memory-access]

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 投票
0 回答
440 浏览

c++ - VS2010 C++ 非托管编译为托管 - CLR.dll 在退出时崩溃

我正在 VS2010 中开发一个非托管 C++ 项目。该项目最初是作为 Windows 控制台应用程序创建的(/SUBSYSTEM:CONSOLE,带有预处理器定义 _CONSOLE,使用 _tmain() 作为入口点)。我已将其更改为窗口应用程序,以便为界面提供更多功能(/SUBSYSTEM:WINDOWS,带有预处理器定义_WINDOWS,使用_tWinMain() 作为入口点)。

启动并完美运行,但是当我退出应用程序时,就像窗口消失一样,我得到一个对话框,说可执行文件已停止工作。单击调试,选择已随项目打开的 VS2010,然后出现另一个对话框,说明可执行文件已停止工作。当我在那个上单击“调试”时,我得到另一个对话框,上面写着“调试器已附加但未配置为调试此未处理的异常。从 .NET Framework v4.0 代码中引发了未处理的异常”。

注意:此崩溃仅在应用程序通过双击应用程序图标作为发行版运行时发生。当我在 VS2010 IDE 中运行时,它会优雅地退出。

我觉得这很奇怪,因为我的项目使用标准 Windows 库定义为 Win32。于是我查看了系统的错误日志,发现我的可执行文件的错误如下:

错误应用程序名称:,版本:1.0.0.1,时间戳 0x5638a404 错误模块名称:clr.dll,版本:4.0.30319.34014,时间戳:0x52e0b784 异常代码:0xc0000005

对此进行了调查,发现 CLR.dll 是 .NET 管理的。我不确定为什么我的应用程序现在使用它。查看了我的项目属性,没有看到任何需要它的引用,所以我假设当我更改为 SUBSYSTEM:WINDOWS 或预处理器 _WINDOWS 或两者时,它必须已作为要求包含在内。

然后,我查找了文本“”并找到了以下链接 ( https://support.microsoft.com/en-us/kb/2640103 ),其标题为FIX: Faulting module name: clr.dll error message when you run基于 Microsoft .NET Framework 4 的应用程序。这似乎表明我的应用程序现在正在构建为 .NET 应用程序,这不是本意。

谁能告诉我为什么我在运行我的可执行文件时访问 CLR.dll?为什么我的应用程序在以前没有这样做的情况下被构建为 .NET 4?在这一点上,我不知道如何找出它抛出访问错误的原因,但我认为这是因为应用程序没有编码为处理 .NET 4。

0 投票
1 回答
2855 浏览

python - 访问冲突 (0xC0000005) NumPy 数组

我在下面有这个简单的 NumPy/Python 代码:

当最后一行被解释时,我有这个:

如果 i < 354993 执行很好。我在 Windows 8 64 位上使用 Python 2.7 32 位。是因为内存限制?在这种情况下,让这个工作的最佳解决方案是什么?

0 投票
1 回答
100 浏览

gdb - 我无法使用 gdb/mi 访问我曾经使用 gdb 访问的内存位置

我正在尝试print *((int*)0x00401000)使用 gdb 和 gdb/mi 在 Kmines(扫雷游戏)上执行命令。使用 gdb 时,该命令起作用并返回输出$1=0。但是在使用与 gdb/mi 相同的命令时,它会返回^error,msg="Cannot access memory at address 0x400000"错误。Gdb 绝对可以访问该位置,这是毫无疑问的。但是为什么 gdb/mi 不能,而 gdb 可以呢?

0 投票
1 回答
185 浏览

c++ - 基于 SAPI 的应用程序在枚举令牌时引发内存访问冲突

我最近刚刚下载了 Visual Studio 2015(社区),以便我可以使用 Microsoft SAPI TTS 开发应用程序。我安装了 5.1 SDK,然后安装了 5.4 SDK for Speech,并安装了 Runtime Languages for SAPI。

到目前为止,我可以通过使用我希望 SAPI 通过直接参数和读取 SSML .XML 文件说出的短语来设法让应用程序工作。SAPI 和 SSML 的所有功能都可以工作,除了与更改语音令牌有关的任何事情。(例如,<voice xml:lang="pl-PL">......<voice required="Gender:Female">等)

我阅读了一些有关如何设置语言/语音令牌的论坛,并尝试了以下代码:

该程序构建没有错误,但在最后的返回语句中抛出错误 0xC0000005(内存访问冲突)。

由于不推荐使用的方法 ::GetVersionExW()我确实必须修改头文件<sphelper.h>...我设法使用以下链接中的方法使其工作:http: //www.codeproject.com/Articles/678606/Part-Overcoming- Windows-s-deprecation-of-GetVe。奇迹般地(并且对系统源代码进行了一些调整,这可能是个坏主意),它奏效了。

我不知道程序为什么会在最后抛出,因为问题一定出在程序访问注册表令牌中。我知道问题通常出在指针上,那么我需要做些什么来完成这项工作?

请注意,我正在尝试使该cpVoice对象使用波兰标记“Paulina”。有没有办法以某种方式手动将注册表令牌值分配给对象?

0 投票
1 回答
329 浏览

compilation - Gem5 中用于 ARM 处理器的指令访问

我使用 Gem5 来获取 ARM 处理器的指令访问。我使用 -marm 选项生成代码。

我相信使用此选项只会生成 32 位 ARM 指令。但结果如下所示:

我们可以看到,在 2000 年,使用了 _start+9,即 _start+7 的 2 个字节。所以我认为使用了 16 位指令。为什么会这样?为什么不是32位?

另外,有谁知道 _start+7.0 和 _start+7.1 是什么意思?为什么我有两条不同的指令具有相同的内存地址?

提前致谢。

0 投票
1 回答
134 浏览

c - C - 多次递归写入一个指针后的内存访问错误

当我想到我暂时称为 FIF 循环(函数循环)的循环时,我正在玩许多不同且愚蠢的循环形式。

它工作得很好(它比常规循环慢 10 倍,但现在是 nvm),直到它完成 174665 次重复。在第 174665 次重复时,它会Cannot access memory at address在 *k 指针上抛出 line: void fif(bool (*f)(int *x),int i,int *k){。它总是在同一点崩溃(相同的重复)。任何想法为什么?在 Ubuntu 15.10,gcc 版本 5.2.1 20151010 上进行测试。我是 C 新手,所以请耐心等待 newbi :)。提前感谢您的帮助

我的代码:

0 投票
1 回答
447 浏览

performance - 多次访问主存和乱序执行

让我们假设我有两个指针指向未缓存的不相关地址,因此它们在被取消引用时都必须从主内存一路来。

如果乱序执行允许在c计算 的值之前执行代码,那么在现代英特尔处理器上如何获取值ab继续进行?

潜在的流水线内存访问是否完全序列化,或者 CPU 的内存控制器是否执行了某种获取重叠?

换句话说,如果我们假设访问主存需要 300 个周期。获取ab花费 600 个周期,或者乱序执行是否会导致一些可能的重叠并且可能花费更少的周期?

0 投票
1 回答
3856 浏览

go - 使用 Golang 读取随机内存位置

晚上好,

我一直在尝试构建一个 golang 应用程序来扫描内存中的值,但我正在努力理解如何解决特定的内存位置。我知道在访问应用程序中的内存时,您可以使用*variablename来尊重并获取地址位置,但是我将如何提供地址位置并将值打印到屏幕或从 RAM 中获取下一个分配的任意大小的对象并打印它的值?

提前感谢您可能愿意分享的任何帮助

0 投票
1 回答
2696 浏览

c# - Solidworks,跟踪 Isldworks.CloseDoc 上的内存访问冲突错误

我在 C# 中使用的插件中有两个不同的功能。最近(显然)Solidworks 在到达这两个函数的某些部分时一直崩溃(可能更多,但这是迄今为止我发现的仅有的两个。)在调试下,这两个函数都给我一个“内存访问冲突”错误”。每次在我关闭活动文档的行上都会发生此错误,并且大约有 95% 的时间会发生此错误。

它几乎总是在同一部分。它似乎与运行时间或已打开和关闭的部件数量无关。如果我不关闭文件,我似乎没有收到错误消息。但是在运行大型程序集时,就会出现问题。在关闭前添加 1 秒等待似乎可以降低错误的频率(如,我偶尔可以通过整个程序集而不会出现错误)

快速解释我主要关心的功能是做什么的;它从组件的顶层向下工作,将自定义属性从主组件和子组件传播到它们的子组件。所以我不断地打开和关闭不同的装配和零件文件。

下面的代码已被精简到几乎可以复制错误的最低限度。错误发生在第 59 行。从我目前在网上看到的情况来看,这些似乎很难追踪。任何帮助是极大的赞赏。

更新:看到这个问题后;是什么导致内存访问冲突?我尝试弄乱我在函数中使用的一些全局变量,但没有效果。然而,我设法将我的基本代码包装在不同的逻辑结构中,以便循环访问似乎可以避免这个问题的部分。但我觉得那充其量只是一个创可贴,并且希望将来能够避免这个问题。

0 投票
0 回答
58 浏览

c++ - 打印房间但只能访问一次

我正在修补一种从这个问题打印房间的方法。我使用来自扩展 ASCII的方框绘图字符来测试它,所以我认识到这限制了我的代码将在其上编译的范围。

如果您不想在那里阅读,请快速解释问题:

房间被定义为一个 4 位整数,使得

  • 最高位代表房间是否有西墙
  • 房间是否有北墙的下一个最重要的位
  • 房间是否有东墙的最不重要的一点
  • 最低位表示房间是否有南墙

例如,由0b1101表示的房间将有西墙、北墙和南墙:

还有额外的限制:

  1. 房间的外墙总是有一堵墙
  2. 内墙将始终在两个房间中表示(示例0b1101有一面墙向南,所以它下面的房间必须设置次高有效位来指示北墙)
  3. 永远不会超过numeric_limits<int>::max()房间

我的问题是选择交叉字符。我的蛮力算法必须访问每个房间两次(第一行/列中的房间除外)。有没有办法找到每个房间只有一次内存访问的交叉点?


如果您想查看我的代码以供参考;它包含:

  1. Avector<char>的房间信息
  2. Asize_t给出行宽
  3. Avector<int>带有每个房间的标签(这可以设置vector(size(testValues), -17)为只打印没有标签的房间结构

如果您对此的简单测试感兴趣,您可以这样做:

Live Example