零长数组

零长数组

Content #

GNU C语言允许使用长度为0的数组来增强结构体的灵活性,其在动态创建结构体时有着非常明显的优势,例如下面这几行代码:

struct s {int n; long d[0]; };
int m = 数值;
struct s p = malloc(sizeof (struct s) + sizeof (long [m]));

struct s结构体中的数组成员变量d在作用上与指针极为相似,但是在为指针p开辟存储空间时却仅需执行一次malloc函数。由此可见,柔性数组成员不仅能够减少内存空间的分配次数提高程序执行效率,还能有效保持结构体空间的连续性。

From #

一个64位操作系统的设计与实现