コメントには次のlinux/list.h
ように書かれています。
- 使用
list_del_entry
時: 注:list_empty
この後、エントリがtrueを返さない場合、エントリは未定義の状態になります。 - For
list_del
:これは、prev/nextエントリがすでにわかっている内部リスト操作専用です。
では、リンクリストからオブジェクトを安全に削除して、それlist_empty
が機能していることを確認したり、次のリンクリストノードの削除が正しいことを確認したりするにはどうすればよいですか?
これは現在の私の実装です:
struct kool_list{
int to;
struct list_head list;
int from;
};
struct kool_list *tmp;
struct list_head *pos, *q;
struct kool_list mylist;
list_for_each_safe(pos, q, &mylist.list){
tmp= list_entry(pos, struct kool_list, list);
printf("freeing item to= %d from= %d\n", tmp->to, tmp->from);
list_del(pos);
free(tmp);
}