我試圖尋找一個答案,可以幫助我解決我的問題,但我無法真正解決它自己。所以在這裏。我正在編程nesC這是類似於C.在nesC中創建一個結構體的深層拷貝到一個結構體數組(類似於C)
我想在結構數組的特定位置內結構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]中的值也會發生變化,如果我要做正確的深度拷貝,則不應該發生這種情況。
非常感謝您的幫助!
這不是一個結構聲明,它是一個名爲'v'的變量的聲明和初始化。 – unwind