问题标签 [memmove]
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.
rust - 将结构复制到 Rust 中的特定内存位置
如果我有一个struct
,例如:
如何将它复制到内存中的特定位置,例如0x1000
有效地复制到内存中的某个点?像这样的东西会起作用吗?
请注意,repr(C, packed)
这里实际上需要该部分。
该软件在裸 x86_64, ring 0上运行,没有操作系统或其他限制。另外,我在没有标准库的情况下进行编程,所以这应该可以只使用core
库来实现。
这当然是不安全的,但这不是问题。
编辑:只是澄清一下:我正在复制到未初始化的内存。
python - 使用 ctypes.memmove() 从 ctypes POINTER 创建 numpy 数组会产生错误的结果
我正在使用 ctypes 调用 C++ 函数并计算单应性。然后它被转换成一个numpy数组。用 C++ 打印的单应性是正确的。但是,在 python 中,使用 ctypes.memmove() 转换为 numpy 数组后是完全错误的。
例如,在 C++ 中,单应性是:
[[0.999931, 3.05449e-06, 0.0219359],
[-3.46952e-05, 1.00004, 0.0162477],
[-1.20569e-08, -6.80167e-09, 1]]
在 Python 中,trs_matrix(单应性)是:
[[ 3.36311631e-44, 0.00000000e+00, 2.25339716e+12]
[ 4.59163468e-41,2.25339612e+12, 4.59163468e-41]
[2.25339821e+12,4.59163468e-41, 2.24207754e-44]]
蟒蛇代码:
C++ 代码:
c++ - 使用 memmove 在 C++ 的构造函数中初始化整个对象
使用 memmove/memcpy 使用构造函数参数初始化对象是否安全?
似乎没有人使用这种方法,但是当我尝试它时效果很好。
在堆栈中传递的参数会导致问题吗?
假设我有一堂课foo
如下,
我可以按如下方式使用 memmove 初始化变量吗?
c - memcpy 或 memmove 能否返回与 dest 不同的指针?
函数memmove
定义如下:
在 Linux 手册页中,它说:
返回值
memmove() 函数返回一个指向 dest 的指针。
为什么函数不只是定义为void memmove(…)
它总是返回输入参数之一?返回值可以与 不同dest
吗?
还是返回值真的总是dest
如此,只是为了能够以一些创造性的方式组合函数?
c - 从字符串中删除前几个字符
我需要从没有任何库的数组中删除前 3 个字符。我该怎么做呢?我知道我可以使用memmove
,但我正在一个没有标准库的系统上工作,也memmove
适用于指针。我memmove
可以这样做:
memmove
但是我可以在没有或任何其他标准库函数的情况下从数组中删除字符吗?
c++ - memmove 函数会与临时指针共享相同的地址吗?
假设有一个指向浮点值数组的指针:float *source;
我们知道它的大小为int sourcesize;
有一个已经实现的函数,它souce
从以下位置向数组添加一个元素inputVec
:
现在,我想从m
源数组的第 th 个元素中复制 1 个元素并将其附加到源端。通过使用上面的 addRecord,我实现了如下功能:
看来函数memmove
中的调用addRecord
可能会共享临时变量位置。因此,也许我最终不应该删除temporary
。但我想也许他们不共享相同的地址,那么temporary
在这种情况下我应该删除。
那么,到底该不该删temporary
呢?
source
或者,有没有更好的方法通过使用函数将元素从数组复制到其末尾addRecord
?
c++ - 如何将 2 个元素从头部移动到向量中的给定位置
我想将前 2 个元素移动到向量中的给定位置,使用memmove
以下代码结果不正确:
这样做的结果是1, 2, 3, 1, 0
,而期望是1, 2, 3, 1, 2
。我怎样才能完成我的工作?
c++ - C++ - 如何对二维数组中的项目使用 memmove?
我有以下二维数组:
我一直在为每个通道移动代码中的内存块,如下所示:
但是,这给了我错误的结果,我不明白为什么。我正在使用的电话有什么问题memmove
?
或者,我尝试使用以下一维数组(每个通道 1 个)并得到正确的结果:
assembly - 试图在 asm 中重新编码 memmove
我在 Ubuntu 16.04 上使用 nasm,目前正在尝试重新编码 Cmemmove()
函数。
这是我的代码:
我这样称呼它:
预期输出为:
但我得到:
由于某些原因,当我到达第四个字符时,它会回到我的字符串的开头rsi
。我的问题是为什么?我究竟做错了什么?
PS:同样的问题每三个字符发生一次,就像它无法继续前进,不得不回到第一个。
提前致谢。
c - 使用 `memmove` 循环移动数组
假设我有一个像这样的整数数组
现在我想移动这个数组,使所有空条目都在左边,即bar = {0,0,0,3,1}
.
我以为我可以做到这一点
- 找出我必须执行的轮班次数
memmove()
用来做轮班。
我用下面的循环解决了 1.
但是我不知道如何使用memmove()
now 来执行转变,我试图这样做memmove(bar + shift, foo, MAX * sizeof(*foo)-1);
但没有成功。
是memmove()
适合这项工作的正确工具吗?如前所述,如何循环整数数组?如果这发生在bar
作为指针传递的函数内部怎么办?