2

リンクされたリストをループに割り当てる際に奇妙な問題があります。

単純化されたソースコードを考えてみましょう:

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 を使用する必要がありますか?

4

1 に答える 1