struct Data
{
int len;
char data[0];
}
原来的data中没有元素,不分配内存,结构体Data的大小为4
假如现在分配15字节的内存,并且将指向这块内存的指针强制转换为(Data*):
Data* pData=(Data*)malloc (sizeof(Data)+11)
malloc申请了15个字节的连续内存空间,强制转换为指向只有4个字节大小的结构体的指针时,前面4个字节被认为是Data结构,后面的部分可以扩展。比如:
char str[11]="helloworld";
Data* pData=(Data*)malloc (sizeof(Data)+11)
memcpy(pdata->data,str,11);
那么cout<<pData->data输出的是:
helloworld