我在循环中分配链表时遇到了奇怪的问题。
考虑一个简化的源代码:
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 吗?