我试图寻找可以帮助我解决问题的答案,但我自己却无法解决。所以就到这里。我在与C相似的nesC中编程。
我正在尝试在struct数组的特定位置内复制struct v。结构v的定义如下:
struct ip_iovec v = {
.iov_next = NULL,
.iov_base = payload,
.iov_len = len,
};
ip_iovec定义为:
struct ip_iovec {
uint8_t *iov_base;
size_t iov_len;
struct ip_iovec *iov_next;
};
为此,我创建了一个相同类型的struct数组:
struct ip_iovec buffer_v[2];
现在,我想将v深拷贝到buffer_v数组的第二个位置。为此,我试图做
buffer_v[1] = v;
buffer_v[1].iov_next = v.iov_next;
buffer_v[1].iov_base = v.iov_base;
buffer_v[1].iov_len = v.iov_len;
并尝试了
memcpy(&buffer_v[0], &v, sizeof(struct ip_iovec));
但是这些都不起作用。另外,我想将值从位置1复制到数组中的位置0:
buffer_v[0] = buffer_v[1] (1)
并使用位置0的结构值:
value = &buffer_v[0] (2)
由于定义v的函数在执行(1)和(2)之后被调用,因此其值被重写,这就是为什么我想对其进行深拷贝。当我说上述操作不起作用时,我的意思是当v更改时,buffer_v [0]中的值也会更改,如果我要进行正确的深度复制,则不应该发生这种情况。
非常感谢您的帮助!
最佳答案
“工作”是什么意思?您如何检查?
要复制结构,只需使用分配即可,无需花哨:
buffer_v[0] = v;
当然,如果
v
具有指针,并且您不想复制指针值,即复制点位于同一数据上,则还需要为新数据分配空间并复制数据。由于您没有显示struct ip_iovec
的实际声明,因此很难提供帮助。关于c - 将结构深层复制到nesC中的结构数组(类似于C),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19706234/