我试图寻找一个可以帮助我解决问题的答案,但我自己无法真正解决。就这样吧。我正在用类似于 C 的 nesC 编程。
我正在尝试在结构数组的特定位置内对结构 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 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] 中的值也会发生变化,如果我要进行正确的深度复制,则不应该发生这种情况。
非常感谢您的帮助!