问题标签 [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 投票
4 回答
183 浏览

c - 使用 C,我如何访问与另一个 C 程序相同的内存块?

所以,我在学习 C 的第一个小时。也许我今晚会跳到 C++。

我想使用 C 创建两个可以相互“对话”的命令行程序。想到的第一个想法是通过写入和轮询文件在两者之间传输信息。但是,我认为 C 提供了直接分配和访问内存所需的所有方法,这将是一种更快、更明智的技术。

有人可以提供一个例子或建议吗?

0 投票
4 回答
55684 浏览

cuda - 在 CUDA 中,什么是内存合并,它是如何实现的?

什么是 CUDA 全局内存事务中的“合并”?即使通过我的 CUDA 指南,我也无法理解。怎么做?在 CUDA 编程指南矩阵示例中,逐行访问矩阵称为“合并”或 col.. by col.. 称为合并?哪个是正确的,为什么?

0 投票
3 回答
540 浏览

openmp - OpenMP C 并行化算法

在“Using OpenMP”一书中,是 C 中错误内存访问的一个例子,我认为这是我尝试并行化高斯算法的主要问题。

该示例如下所示:

所以,我确实理解为什么这会导致内存访问错误。在 C 中,二维数组按行存储,并且在每 i 步中,都会将新行从内存复制到缓存。

我正在尝试为此找到解决方案,但我没有得到很好的加速。我的尝试的影响很小。

有人可以给我一个提示我能做什么吗?

最简单的方法是交换 for 循环,但我想按列进行。

第二次尝试:

根本没有任何区别。

第三次尝试:

多谢

问候 Stepp

0 投票
2 回答
2968 浏览

c - 执行 malloc() 期间的 EXC_BAD_ACCESS (KERN_INVALID_ADDRESS)

我正在使用以下 GCC 在 Mac OS X Snow Leopard 中编译 C 库:

当我运行这个库的一些单元测试(写在CuTest上)时,其中一个测试出现了问题:一个EXC_BAD_ACCESS信号。这是一个常见的问题,我对这类问题有一些了解——我是一个 Linux 人,他称之为“分段错误”,了解正在发生的事情以及解决问题的常用方法。令人惊奇的是,错误访问是在function执行内部执行的malloc。看看我在 GDB 中得到的这个回溯:

这个测试用例有以下几行,错误总是发生在第四行。如果我以任何方式切换线路,问题仍然发生在第四行:

那么,怎么会malloc()导致这样的问题呢?我什至没有向它传递一个指针!它是一个错误吗?有人见过这样的事情吗?

提前致谢!

0 投票
3 回答
5003 浏览

c++ - 访问其他应用程序 C++ 的内存

我正在考虑一个我已经有一段时间的问题.. 我想编写一个 C/C++ 程序(首先在 Windows 下),它可以访问(读取/更改值)内存(堆栈,堆,一切)其他正在运行的程序。(不像共享内存,而是计算机拥有的任何内存......)无需从我自己的应用程序启动应用程序。我以前见过类似的东西,但我就是不知道它是如何完成的......如果我要访问任何正在运行的程序的内存我会从操作系统中得到错误,对吗?任何帮助表示赞赏!

0 投票
3 回答
351 浏览

c++ - 我可以通过 C++ 中的(无符号)char* 读取任何可读的有效内存位置吗?

我的搜索 foo 今天似乎缺少。

我想知道根据 std C++ 通过 (unsigned(?)) char* 检查“任何”内存位置是否合法。任何位置是指程序内对象或数组(或数组内)的任何有效地址。

例如:

免责声明:这个问题纯粹是学术性的。我不打算把它放到生产代码中!合法我的意思是如果根据标准它真的是合法的,那就是它是否适用于所有实现的 100%。(不仅仅是在 x86 或一些常见的硬件上。)

子问题:static_cast从 void* 地址到 char* 指针的正确工具是什么?

0 投票
1 回答
2025 浏览

file-io - MinGW 中是否有 fmemopen()

我正在尝试编译一些在 MinGW 中使用fmemopen函数的代码。我发现MinGW没有这个功能。我需要一个等效于fmemopen().

我可以使用任何替代功能吗?

0 投票
1 回答
124 浏览

c++ - 构造过程中的非常量生成器单通道初始化

有没有办法通过生成器(类似于)构造函数参数来构造一个std::vector具有未初始化(非零)值甚至更漂亮的新值,该构造器参数在首先将所有元素初始化为零的情况下产生所需的非标准(非常量)值?这是因为我希望(随机)模型创建 api 尽可能地高效,从而只编写一次容器元素。为(可能还有其他人)拥有一个生成器构造器不是很好吗?!为什么 C++ 还没有将它添加到标准中?std::generate_n()std::vector

以下类似构造函数的 C 函数说明了我寻求的自定义初始化构造的一次写入行为std::vector

我相信它归结为使用的 STL 分配器的行为,因为它负责写入初始零(或不写入)。

如果我们使用std::vector带有迭代器的构造函数,我们首先必须在其他地方分配和写入随机值,甚至比使用push_back().

0 投票
2 回答
637 浏览

cuda - 共享内存中的无银行冲突访问

我必须使用大小为 64 个元素的共享内存,是 32-bank 数量的两倍。所以情况是内存访问次数是扭曲中线程数的两倍。我应该如何解决它们以产生无银行冲突的访问?

0 投票
1 回答
6925 浏览

x86 - 以下汇编指令添加 -8(%rbp), %xmm0 做什么?

我试图弄清楚汇编指令实际上做了什么

我知道这是带有 SSE2 的 x86-64 机器上的浮点加法。另外,我知道 %xmm0 是一个寄存器。但是,我不确定 -8(%rbp) 是什么意思。手册对此有点混乱。

基本上,问题是,-8(%rbp) 是否意味着它是从寄存器中获取一个值(可能是 rbp 的最后 8 个字节),还是从内存中获取一个值(从 -8 偏移的浮点值rbp 中包含的地址)。