char*をstrcatしようとしています。しかし、私は問題に気づきました。
struct d{
struct d* up //parent
char *path //path to d
char *name //path + breadth = name
}
for(j=0; j<b;j++){
struct d* breadth_p;
breadth_p=malloc(sizeof(struct d));
char buffer[256];
snprintf(buffer, sizeof(buffer), "/%d", j) //prepares buffer to have "/j"
breadth_p->up=cur_parent;
breath_path->path=cur_parent->up->name;
breadth_name=strcat(breadth->path, buffer);
printf("name: %s\n", breadth_p->name);
free(breadth_p);
}
つまり、cur_parentの名前とパスをrootとして渡し、bを3として渡すとします。次のように出力されます。
root/0
root/0/1
root/0/1/2
私はbreadth_pを正しく解放しなかったと想定しているので、以前の名前を連結しています。
私が期待している結果は
root/0
root/1
root/2
誰かが私がこれが起こっている理由を理解するのを手伝ってもらえますか?