リンクされたリストをループに割り当てる際に奇妙な問題があります。
単純化されたソースコードを考えてみましょう:
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 u でポインターを割り当てるには、ダブルポインターを使用する必要があることを理解していますが、それでも機能しません。私は何が欠けていますか?gdb にはメモリ空間が割り当てられていません :/. **tmp を使用する必要がありますか?