在SGI STL分配器的子分配中,有16个自由列表,分别管理大小为8,16,......,128的小块。 free-lists'节点的结构是:
union obj{
union obj *free_list_link;
char client_data[1];
}
我的问题是:为什么它的设计是这样的?成员client_data用于什么?
答案 0 :(得分:1)
这是一种常见的设计模式。 client_data []实际上是8,16,... 128字节。 如果你看一下obj的分配位置,它可能看起来像 malloc(sizeof(obj)+ 128) 对于一个128字节的块。