我有一個奇怪的問題,在循環中分配鏈接列表。循環分配鏈接列表內嵌結構不分配內存
考慮簡化源代碼:
struct main_s {
minor_s minor_structure; (inline)
};
struct minor_s {
list_s *first_dir;
};
struct list_s {
anotherlist_s *first_object;
list_s *next;
};
struct anotherlist_s {
//multiple fields
};
,我有一個基本的init/DEINIT功能,如:
struct main_s *main_s_init();
void main_s_deinit();
,現在我還挺充斥着在循環分配:
im passing to this function main_s->minor_structure.first_dir and, how_many parameter, defining how many linked nodes going to be initiated.
void loop_inittiation(struct list_s *list, int how_many) {
int i;
struct list_s *tmp = list;
for(i = 0; i < how_many; i++) {
tmp = malloc(sizeof(struct list_s));
tmp = tmp->next;
}
}
這就是我遇到的問題,即時分配臨時「tmp」而不是指向結構真實存在。我明白,要通過tmp分配一個指針,你必須使用雙指針,但它仍然不起作用。我錯過了什麼?在gdb中沒有分配內存空間:/。 我必須使用** tmp嗎?
好吧,它不能在這個例子中工作,不幸的是,我得到了成員'下一個'的錯誤請求,而不是結構或聯合。將試圖弄清楚。 – user2207495 2013-05-16 10:14:57
即使輸入* tmp =((* tmp) - > next);它編譯但只改寫結構中列表的第一個節點,而不是進入下一個節點。 – user2207495 2013-05-16 10:33:54
它應該是tmp =&((** tmp) - >下一個)? – xaxxon 2013-05-16 17:04:04