redis 源码 sds 的结构体使用 c 语言的什么魔法
資深大佬 : dayoushen 4
struct sdshdr { long len; long free; char buf[]; };
如上,这个 char buf[] 竟然不占内存,在 64 位系统 sizeof(long)=8,sizeof(sdshdr)=16 。问题是这个 buf 为什么不占内存,不能理解为 char * ?然后使用中 sdshdr * newsds = (sdshdr * )malloc(sizeof(sdshdr) + initlen + 1),newsds->buf 又可以操作后面的字符。
大佬有話說 (4)