【发布时间】:2013-05-08 07:07:33
【问题描述】:
我看了redis的代码,它定义了一个结构:
typedef struct zskiplistNode {
robj *obj;
double score;
struct zskiplistNode *backward;
struct zskiplistLevel {
struct zskiplistNode *forward;
unsigned int span;
} level[];
} zskiplistNode;
它会像这样创建节点:
zskiplistNode *zn = zmalloc(sizeof(*zn)+level*sizeof(struct zskiplistLevel));
也就是说,如果zn的地址是0x10000,那么&(zn->level[0])就是0x10000+sizeof(zskiplistNode),那么array的内存地址就在struct后面?
【问题讨论】:
标签: c arrays memory struct zmalloc