在redis中有一个叫做sdahdr的结构:structsdahdr{intlen;intfree;charbuf[];}为什么不使用char*buf而不是sizeof(sdahdr)==8而不是12? 最佳答案 charbuf[]是字符串的占位符。由于字符串的最大长度在编译时未知,因此该结构为其保留了名称,因此可以对其进行适当的寻址。在运行时分配内存时,分配必须包括字符串的长度加上结构的大小,然后可以通过数组传递带有字符串的结构。char*s="test";structsdahdr*p=malloc(sizeof(structsd