typedef struct
{
unsigned int datalen;
byte data[0];
}Data_0; *PData_0;
typedef struct
{
unsigned int datalen;
byte data*;
}Data_1; *PData_1;
结构体Data_0与Data_1在性质上没有什么不同,它们的size是相等的,都是8.但在用法上有很大区别。
例:
PData_0 stack0 = (PData_0)malloc(MAX_PATH);
PData_1 stack1 = (PData_1)malloc(MAX_PATH);
//>--1
memcpy(stack0->data, "this a test", sizeof("this a test"));
//>--2
memcpy(stack1->data, "this a test", sizeof("this a test"));
执行到代码段1的时候没有问题;执行到代码段2的时候会抛出异常,data指针未分配内存;是不是很神奇。