我试图理解zram和zswap中使用的zsmalloc分配器,但是我在zsmalloc.c中的init_zspage代码中被卡住了
link = (struct link_free *)kmap_atomic(page) +
off / sizeof(*link);
此处链接未初始化。如果没有初始化,问题是sizeof(* link)的值是什么。据我所知,sizeof(* link)必须在分配前计算。
答案 0 :(得分:0)
此大小将在编译时计算。
struct link_free *link;
235 struct link_free {
236 /* Handle of next free chunk (encodes <PFN, obj_idx>) */
237 void *next;
238 };
即。此struct的大小=指针的大小。那么这就是你在想什么?