问题标签 [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.
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。
python - 访问冲突 (0xC0000005) NumPy 数组
我在下面有这个简单的 NumPy/Python 代码:
当最后一行被解释时,我有这个:
如果 i < 354993 执行很好。我在 Windows 8 64 位上使用 Python 2.7 32 位。是因为内存限制?在这种情况下,让这个工作的最佳解决方案是什么?
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 可以呢?
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”。有没有办法以某种方式手动将注册表令牌值分配给对象?
compilation - Gem5 中用于 ARM 处理器的指令访问
我使用 Gem5 来获取 ARM 处理器的指令访问。我使用 -marm 选项生成代码。
我相信使用此选项只会生成 32 位 ARM 指令。但结果如下所示:
我们可以看到,在 2000 年,使用了 _start+9,即 _start+7 的 2 个字节。所以我认为使用了 16 位指令。为什么会这样?为什么不是32位?
另外,有谁知道 _start+7.0 和 _start+7.1 是什么意思?为什么我有两条不同的指令具有相同的内存地址?
提前致谢。
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 :)。提前感谢您的帮助
我的代码:
performance - 多次访问主存和乱序执行
让我们假设我有两个指针指向未缓存的不相关地址,因此它们在被取消引用时都必须从主内存一路来。
如果乱序执行允许在c
计算 的值之前执行代码,那么在现代英特尔处理器上如何获取值a
并b
继续进行?
潜在的流水线内存访问是否完全序列化,或者 CPU 的内存控制器是否执行了某种获取重叠?
换句话说,如果我们假设访问主存需要 300 个周期。获取a
并b
花费 600 个周期,或者乱序执行是否会导致一些可能的重叠并且可能花费更少的周期?
go - 使用 Golang 读取随机内存位置
晚上好,
我一直在尝试构建一个 golang 应用程序来扫描内存中的值,但我正在努力理解如何解决特定的内存位置。我知道在访问应用程序中的内存时,您可以使用*variablename
来尊重并获取地址位置,但是我将如何提供地址位置并将值打印到屏幕或从 RAM 中获取下一个分配的任意大小的对象并打印它的值?
提前感谢您可能愿意分享的任何帮助
c# - Solidworks,跟踪 Isldworks.CloseDoc 上的内存访问冲突错误
我在 C# 中使用的插件中有两个不同的功能。最近(显然)Solidworks 在到达这两个函数的某些部分时一直崩溃(可能更多,但这是迄今为止我发现的仅有的两个。)在调试下,这两个函数都给我一个“内存访问冲突”错误”。每次在我关闭活动文档的行上都会发生此错误,并且大约有 95% 的时间会发生此错误。
它几乎总是在同一部分。它似乎与运行时间或已打开和关闭的部件数量无关。如果我不关闭文件,我似乎没有收到错误消息。但是在运行大型程序集时,就会出现问题。在关闭前添加 1 秒等待似乎可以降低错误的频率(如,我偶尔可以通过整个程序集而不会出现错误)
快速解释我主要关心的功能是做什么的;它从组件的顶层向下工作,将自定义属性从主组件和子组件传播到它们的子组件。所以我不断地打开和关闭不同的装配和零件文件。
下面的代码已被精简到几乎可以复制错误的最低限度。错误发生在第 59 行。从我目前在网上看到的情况来看,这些似乎很难追踪。任何帮助是极大的赞赏。
更新:看到这个问题后;是什么导致内存访问冲突?我尝试弄乱我在函数中使用的一些全局变量,但没有效果。然而,我设法将我的基本代码包装在不同的逻辑结构中,以便循环访问似乎可以避免这个问题的部分。但我觉得那充其量只是一个创可贴,并且希望将来能够避免这个问题。
c++ - 打印房间但只能访问一次
我正在修补一种从这个问题打印房间的方法。我使用来自扩展 ASCII的方框绘图字符来测试它,所以我认识到这限制了我的代码将在其上编译的范围。
如果您不想在那里阅读,请快速解释问题:
房间被定义为一个 4 位整数,使得
- 最高位代表房间是否有西墙
- 房间是否有北墙的下一个最重要的位
- 房间是否有东墙的最不重要的一点
- 最低位表示房间是否有南墙
例如,由0b1101表示的房间将有西墙、北墙和南墙:
还有额外的限制:
- 房间的外墙总是有一堵墙
- 内墙将始终在两个房间中表示(示例0b1101有一面墙向南,所以它下面的房间必须设置次高有效位来指示北墙)
- 永远不会超过
numeric_limits<int>::max()
房间
我的问题是选择交叉字符。我的蛮力算法必须访问每个房间两次(第一行/列中的房间除外)。有没有办法找到每个房间只有一次内存访问的交叉点?
如果您想查看我的代码以供参考;它包含:
- A
vector<char>
的房间信息 - A
size_t
给出行宽 - A
vector<int>
带有每个房间的标签(这可以设置vector(size(testValues), -17)
为只打印没有标签的房间结构
如果您对此的简单测试感兴趣,您可以这样做: