- #include
- #include<string.h>
- #include<malloc.h>
- typedef struct _flex_array{
- int len;
- char str;
- char buff[];
- }flex_array;
- intmain(intargc,char**argv)
- {
- char*info ="this is a flex array!";
- intinfo_size = strlen(info);
- printf("info_size:%d,struct size:%d\n",info_size,sizeof(flex_array));
- // info_size:21,struct size:8
- flex_array *p = (flex_array *)malloc(sizeof(flex_array) + strlen(info));
- p->len = info_size;
- memcpy(p->buff,info,p->len);
- printf("p:%d,info:%s\n",sizeof(*p),p->buff);
- // p:8,info:this is a flex array!
- free(p);
- return 0;
- }
来源: http://www.bubuko.com/infodetail-2001179.html